我正在考虑添加一个富文本编辑器,以允许非程序员改变文本的方面.但是,有一个问题是,如果标记不正确,则可能会扭曲呈现页面的布局.什么是一个很好的轻量级方法来消毒HTML?
我正在使用带有transform
属性的CSS过渡来在添加和删除元素时缩小元素.
然而,这个问题的一个问题是这个属性不会影响其他元素的流动,所以看起来被删除的元素会缩小,然后其余的元素突然跳跃.
如果我要为高度属性设置动画而不是使用变换,那就没问题,但是在实际使用中我使用的是可变高度的元素,所以我不知道我可以在它们之间设置动画的高度.
编辑:人们建议动画height
属性(不会如上所述)或max-height
属性.该max-height
物业将努力在一定程度上,但你不能对齐定时完美的过渡将继续调整max-height
过去元素的实际高度财产,直到过渡时间结束.
这些方法的另一个问题是它不使用您可以使用transform
属性实现的平滑动画.对象的变换将顺利进行,但是随着浏览器以不同方式呈现这些过渡,以下元素的移动将会断断续续.
这是一个JSFiddle我的意思(尝试添加然后删除元素,并看到元素被删除时的跳转):
var button = document.querySelector("button");
var box = document.createElement("div");
box.className = "box";
box.appendChild(document.createTextNode("Click to delete"));
button.addEventListener("click", function(e) {
var new_box = box.cloneNode(true);
new_box.addEventListener("click", function(e) {
this.className = "box deleting";
window.setTimeout(function(e) {
new_box.remove();
}, 1000);
});
this.parentNode.appendChild(new_box);
});
Run Code Online (Sandbox Code Playgroud)
button {
font-size: 20pt;
}
.box {
font-size: 20pt;
margin: 10px;
width: 200px;
padding: 10px;
background: pink;
transform: scale(1, 1);
transform-origin: top left;
}
.deleting …
Run Code Online (Sandbox Code Playgroud)如何使用PHP DOM扩展(或必要时的其他扩展或库)查找特定节点或属性的偏移量.
例如,假设我有这个HTML文档:
<html><a href="/foo">bar</a></html>
Run Code Online (Sandbox Code Playgroud)
并使用以下代码(进行适当修改):
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//a/@href');
foreach($nodes as $href) {
// Find start of $href attribute here
echo $href->something;
}
Run Code Online (Sandbox Code Playgroud)
我希望看到输出15或其他东西,以表明属性从字符15开始进入文档.
似乎有DOMNode::getLineNo()
返回行号的方法- 这与我想要的类似,但我找不到文本中一般偏移的替代方法.
我有一个带有自定义授权者 lambda 的 AWS API Gateway (v2/HTTP) 设置。
网关的路由键类似于:
ANY /{project_id}/{uri+}
Run Code Online (Sandbox Code Playgroud)
我的授权者 lambda 检查给定用户是否有权获得所提供的权限project_id
。不幸的是,这意味着我无法缓存结果,因为获得一个项目 ID 授权的用户随后会为其他项目 ID 缓存该授权。
我看到AWS 为网关提供了一个“身份源”参数,它将用作缓存密钥:
您可以通过指定authorizerResultTtlInSeconds 为Lambda 授权方启用缓存。当为授权者启用缓存时,API Gateway 使用授权者的身份源作为缓存密钥。如果客户端在配置的 TTL 内的身份源中指定相同的参数,API Gateway 将使用缓存的授权方结果,而不是调用您的 Lambda 函数。
因此,我想使用我的“project_id”路径参数,但对于我来说,是否可以使用支持的身份源来实现这一点并不明显:
是否可以project_id
使用这些表达式来引用路径参数?
Jackson ObjectMapper 有一个功能可以删除空值:
class Car {
Optional<String> ownerName;
String manufacturer;
public Optional<String> getOwnerName() { return ownerName; }
public String getManufacturer() { return manufacturer; }
}
Car batMobile = new Car();
batMobile.owner = Optional.of("Batman");
batMobile.manufacturer = null;
Car stolenCar = new Car();
stolenCar.owner = Optional.empty();
stolenCar.manufacturer = "Tesla";
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_ABSENT);
mapper.writeValueAsString(batMobile);
/*
{
"ownerName": "Batman"
}
*/
mapper.writeValueAsString(stolenCar);
/*
{
"manufacturer": "Tesla"
}
*/
Run Code Online (Sandbox Code Playgroud)
我想要的是删除Optional.empty值,但保留空值:
mapper.writeValueAsString(batMobile);
/*
{
"ownerName": "Batman",
"manufacturer": null
}
*/
mapper.writeValueAsString(stolenCar);
/*
{ …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为实用程序功能编写类型定义:
function getter<T>(field1, field2?, field3?) {
if (field3 !== undefined) {
return (obj: T) => obj[field1][field2][field3];
} else if (field2 !== undefined) {
return (obj: T) => obj[field1][field2];
} else {
return (obj: T) => obj[field1];
}
}
Run Code Online (Sandbox Code Playgroud)
这样,给定以下接口:
interface Contact { phone: string; }
interface Author { name: string; contact: Contact; }
interface Book { id: number; author: Author; }
Run Code Online (Sandbox Code Playgroud)
和示例实例:
const lordOfTheRings: Book = { id: 1, author: { name: 'JRR Tolkien', contact: { phone: '222222' } } …
Run Code Online (Sandbox Code Playgroud) java ×2
php ×2
aws-lambda ×1
css ×1
css3 ×1
dom ×1
html ×1
ide ×1
jackson ×1
javascript ×1
json ×1
sanitization ×1
swing ×1
types ×1
typescript ×1