我一直在阅读MDN的内容类别.在Flow Content部分,他们说:
属于流内容类别的元素通常包含文本或嵌入内容.
因此,Flow内容元素应该包含某些内容.现在我们知道hr并且br元素是无效元素,也就是说它们不包含任何内容.所以问题是:
<hr>和<br>元素属于html中的流内容?另外,我对流内容实际上是多么困惑?我一直在阅读关于此的内容,例如这里的措辞和流量内容之间的区别.据我所知,流内容似乎对应于块级元素,而短语内容似乎对应于内联元素.更准确地说,似乎Flow Content应该是概述整个文档的结构内容.例如,section元素,div元件,header,footer和article等流量含量似乎是某种容器中的元素,或更高的水平元件,像p元件,其包含低级元件(如文本,图像和超链接等)的文件.
<em>,<b>并且<i>包含在流内容等?看到流内容元素列表,似乎每个元素都meta content elements属于流内容.
在下面的演示中,在锚标记上单击并按住 mousedown,然后将光标拖离,同时按住 mousedown,最后松开单击。您将在锚标记周围看到一个红色的虚线轮廓。现在,如果您按下 shift 键,轮廓将偏移几个像素。
a:focus {
outline: 1px dotted red;
}Run Code Online (Sandbox Code Playgroud)
<a href="#">Click+hold, then release, then press shift key</a>Run Code Online (Sandbox Code Playgroud)
该行为不会在按下ctrl或fn键等时发生,但会发生在大多数键上。这种行为似乎是跨浏览器兼容的,这让我思考:
我正在关注新的 React 文档中的钩子工具提示示例。useLayoutEffect根据他们的解释,我假设以下是事情的执行顺序:
React render() --> 协调 --> 如果 virtual dom 改变则更新 DOM --> DOM 更新完成 --> useLayoutEffect 被执行 --> broswer 绘制并触发某种 LayoutPaint 事件 --> useEffect 被触发
为了验证这一点,我将文档示例的 tooltip.js 文件中的useLayouteffecthook 与hook 交换了。useEffect
我放置了一些for循环来减慢useEffect钩子的执行速度。现在,当您加载修改后的示例并将鼠标移到三个按钮中的任何一个时,您将看到第一次使用工具提示在错误的位置进行绘制,然后 useEffect 需要 1-2 秒,然后您将看到工具提示在正确的位置进行另一次重新绘制。到目前为止一切都很好,但现在任何以后的鼠标悬停在同一个按钮上,您都会看到错误位置绘制等待 useEffect 完成,然后正确位置绘制在几毫秒内发生。
所以我有两个问题:
为什么后来的鼠标悬停会导致useEffect渲染阻塞?
React 如何确保useLayoutEffect阻止浏览器绘制发生,如果useLayoutEffect提到其中的任何状态更新,则触发另一个渲染->重绘,同时完全不允许发生先前的浏览器绘制。在我们的例子中,-60px处的工具提示根本没有被绘制。
如果我增加span元素内容的行高,则每行的上下空间会增加.但如果我将线高减少到1以下则没有任何反应.以下是我正在尝试的代码; 我更改了span的内联样式属性中的值
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>
<span style="line-height: 0.1">
This is a paragraph with a standard line-height.<br>
This is a paragraph with a standard line-height.<br>
</span>
<span>
This is a paragraph with a standard line-height.<br>
This is a paragraph with a standard line-height.<br>
This is a paragraph with a standard line-height.<br>
This is a paragraph with a standard line-height.<br>
</span>
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我们考虑以下代码:
#include<iostream>
int main()
{
std::cout<<"First-";
std::cout <<"-Second:";
int i;
std::cin>>i;
std::cout<<"Third in a new line.";
while(1){}
}
Run Code Online (Sandbox Code Playgroud)
给出值4时的输出i是:
First--Second:4
Third in a newline
Run Code Online (Sandbox Code Playgroud)
cout不打印任何换行符.但在我输入任何值(4)后,i打印换行.可能有两个可能的原因:
- 键入数字值后按下的Enter键
i打印为换行符.cin自动生成换行符.
虽然第一个原因似乎更合理,但其原因,我想第二个原因也可能是真的,是因为后Third,当我按下打印Enter没有新的线路,即使打印程序继续,因为运行while(1),可呈现意味着控制台窗口没有按Enter按下键时不打印换行符.因此它似乎会cin自动打印换行符.
那么,为什么在我输入后生成换行cin?会cin自动打印换行符吗?
我试图body用javascript 更改bcakground 并观察到以下不起作用:
document.body.style.background = "#000;"
Run Code Online (Sandbox Code Playgroud)
但是,如果我省略分号,那么它可以工作:
document.body.style.background = "#000"
Run Code Online (Sandbox Code Playgroud)
为什么会这样?还不#000;是一个字符串?
来自MDN的mouseout事件定义如下:
当指针设备(通常是鼠标)移出已连接或关闭其中一个子节点的元素时,会触发mouseout事件.
因此,如果我有一个连接的容器div,mouseout那么我希望如果鼠标从任何一个子节点移出,就会触发该事件.但我所看到的是,如果鼠标被移入容器的孩子,即使然后mouseout被解雇.这是一个例子:
x = 0;
$(document).ready(function(){
$("div.over").mouseout(function(){
$(".over span").text(x += 1);
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="over" style="background-color:lightgray;padding:20px;width:250px;float:left">
<h3 style="background-color:white;">Mouseout event triggered: <span></span></h3>
</div>Run Code Online (Sandbox Code Playgroud)
当鼠标进入时,触发h3了mouseouton div.over.为什么?
编辑:请提及权威参考以备份您的声明.
如果我对ID为id的输入元素应用以下规则,#one则占位符颜色将发生变化,
#one::-webkit-input-placeholder {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用逗号分隔符来组合不同浏览器的占位符规则,则该颜色将不适用,例如
#two::-webkit-input-placeholder,
#two::-moz-placeholder{
color: red;
}
Run Code Online (Sandbox Code Playgroud)
工作示例:
#one::-webkit-input-placeholder {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
#two::-webkit-input-placeholder,
#two::-moz-placeholder{
color: red;
}
Run Code Online (Sandbox Code Playgroud)
为什么#two占位符不将其颜色更改为红色?
我正在浏览Integrated-with-jquery-chosen-plugin的react文档文章,react给出了Chosen jquery插件的示例并提到了以下内容:
\n\n\n注意我们如何包裹
\n<select>一个额外的<div>.<select>这是必要的,因为 Chosen 会在我们传递给它的节点后面附加另一个 DOM 元素。然而,就 React 而言,<div>始终只有一个孩子。这就是我们如何确保 React 更新不会与 Chosen 附加的额外 DOM 节点发生冲突。重要的是,如果您在 React 流程之外修改 DOM,则必须确保 React 没有理由触及这些 DOM 节点。
class Chosen extends React.Component {\n render() {\n return (\n <div> \n <select className="Chosen-select" ref={el => this.el = el}> \n {this.props.children}\n </select>\n </div>\n );\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我最初认为,当<App>使用新setState()调用进行反应重新渲染时,如果我们没有额外的div内容,select那么比较算法就会遇到麻烦,并且dom后面附加的元素select将被删除。但是,显然这并不是正在发生的事情。从代码来看:
<App> | |<App> …Run Code Online (Sandbox Code Playgroud) 从我之前的帖子中,我发现getchar()只有在按Enter键时才会完成.我们考虑一下这段代码:
#include<stdio.h>
main()
{
getchar();
getchar();
getchar();
getchar();
getchar();
}
Run Code Online (Sandbox Code Playgroud)
我希望它能像这样运行:我按下某个键1,然后按Enter键,然后按键2键,然后按键3键,然后按键4键,然后按键4键,输入键,最后按键5键,输入,程序应立即终止.这不是实际发生的事情.会发生什么:我按下某个键1然后按Enter键,然后按键2键,输入键,然后按键3键,输入,程序最终终止!
- 为什么最后两个getchar()不起作用?
我观察到的另一个奇怪的事情是,如果我这样做:key1,key2,key3,key4 + Enter然后程序终止.例如,如果我连续按q,w,e和r然后按Enter键,程序将终止.
- 为什么不是所有的getchar()都要求输入?这是否意味着getchar()将任何其他键作为Enter?但接下来的密钥是否作为下一个getchar()的输入?
让我们考虑另一个代码:
#include<stdio.h>
main()
{
int c=getchar();
int d=getchar();
int e=getchar();
printf("2 getchar are remaining\n");
int f=getchar();
int g=getchar();
printf(" c is %d, d is %d, e is %d, f is %d and g is %d",c,d,e,f,g);
}
Run Code Online (Sandbox Code Playgroud)
我输入:ABCDEFG然后输入.当我按下C或D时,应该打印第2行getchar.但它最后打印,意味着所有getchar()s同时执行 - 这很奇怪.
- 程序是否逐行执行?即在第三个getchar之后,printf()应该可以工作.但是当所有的getchar()都被执行时它终于工作了.
html ×6
javascript ×4
css ×3
html5 ×3
jquery ×2
reactjs ×2
browser ×1
browser-bugs ×1
c ×1
c++ ×1
colors ×1
css3 ×1
definition ×1
ecmascript-6 ×1
getchar ×1
io ×1
mouseevent ×1
placeholder ×1
react-hooks ×1
w3c ×1