小编use*_*782的帖子

为什么<hr>,<br>和<em>元素属于html中的流内容?

我一直在阅读MDN的内容类别.在Flow Content部分,他们说:

属于流内容类别的元素通常包含文本或嵌入内容.

因此,Flow内容元素应该包含某些内容.现在我们知道hr并且br元素是无效元素,也就是说它们不包含任何内容.所以问题是:

  • 为什么<hr><br>元素属于html中的流内容?

另外,我对流内容实际上是多么困惑?我一直在阅读关于此的内容,例如这里的措辞和流量内容之间的区别.据我所知,流内容似乎对应于块级元素,而短语内容似乎对应于内联元素.更准确地说,似乎Flow Content应该是概述整个文档的结构内容.例如,section元素,div元件,header,footerarticle等流量含量似乎是某种容器中的元素,或更高的水平元件,像p元件,其包含低级元件(如文本,图像和超链接等)的文件.

  • 那么为什么同样的元件<em>,<b>并且<i>包含在流内容等?

看到流内容元素列表,似乎每个元素都meta content elements属于流内容.

html html5 definition

5
推荐指数
1
解决办法
159
查看次数

在锚标签上按下任何键盘键时,轮廓偏移的变化是预期的行为吗?

在下面的演示中,在锚标记上单击并按住 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)

该行为不会在按下ctrlfn键等时发生,但会发生在大多数键上。这种行为似乎是跨浏览器兼容的,这让我思考:

  • 这是brosers实现html的错误吗?
  • 或者,这是 w3.org 针对某些用户体验问题建议的预期行为吗?

html css w3c cross-browser browser-bugs

5
推荐指数
1
解决办法
79
查看次数

为什么工具提示示例中使用 useEffect render-blocking(paint-blocking) ?

我正在关注新的 React 文档中的钩子工具提示示例。useLayoutEffect根据他们的解释,我假设以下是事情的执行顺序:

React render() --> 协调 --> 如果 virtual dom 改变则更新 DOM --> DOM 更新完成 --> useLayoutEffect 被执行 --> broswer 绘制并触发某种 LayoutPaint 事件 --> useEffect 被触发

为了验证这一点,我将文档示例的 tooltip.js 文件中的useLayouteffecthook 与hook 交换了。useEffect

这是修改后的例子

我放置了一些for循环来减慢useEffect钩子的执行速度。现在,当您加载修改后的示例并将鼠标移到三个按钮中的任何一个时,您将看到第一次使用工具提示在错误的位置进行绘制,然后 useEffect 需要 1-2 秒,然后您将看到工具提示在正确的位置进行另一次重新绘制。到目前为止一切都很好,但现在任何以后的鼠标悬停在同一个按钮上,您都会看到错误位置绘制等待 useEffect 完成,然后正确位置绘制在几毫秒内发生。

在此输入图像描述

所以我有两个问题:

  1. 为什么后来的鼠标悬停会导致useEffect渲染阻塞?

  2. React 如何确保useLayoutEffect阻止浏览器绘制发生,如果useLayoutEffect提到其中的任何状态更新,则触发另一个渲染->重绘,同时完全不允许发生先前的浏览器绘制。在我们的例子中,-60px处的工具提示根本没有被绘制。

javascript browser reactjs react-hooks

5
推荐指数
1
解决办法
330
查看次数

为什么我们不能为span元素设置小于1的行高?

如果我增加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)

html css html5 css3

4
推荐指数
2
解决办法
4325
查看次数

`cin`会自动生成换行符吗?

我们考虑以下代码:

#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自动打印换行符吗?

c++

4
推荐指数
2
解决办法
1695
查看次数

为什么不能在样式属性中通过javascript插入分号?

我试图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;是一个字符串?

html javascript

4
推荐指数
1
解决办法
79
查看次数

为什么在对子元素执行mousein时会触发mouseout?

来自MDNmouseout事件定义如下:

当指针设备(通常是鼠标)移出已连接或关闭其中一个子节点的元素时,会触发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)

当鼠标进入时,触发h3mouseouton div.over.为什么?

编辑:请提及权威参考以备份您的声明.

html javascript jquery javascript-events mouseevent

4
推荐指数
2
解决办法
914
查看次数

为什么逗号分隔的占位符规则不能在CSS中应用?

如果我对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占位符不将其颜色更改为红色?

html css html5 colors placeholder

4
推荐指数
1
解决办法
522
查看次数

在react Js中集成jquery插件时,为什么要把dom元素包裹在一个空的div中?

我正在浏览Integrated-with-jquery-chosen-plugin的react文档文章,react给出了Chosen jquery插件的示例并提到了以下内容:

\n
\n

注意我们如何包裹<select>一个额外的<div>. <select>这是必要的,因为 Chosen 会在我们传递给它的节点后面附加另一个 DOM 元素。然而,就 React 而言,<div>始终只有一个孩子。这就是我们如何确保 React 更新不会与 Chosen 附加的额外 DOM 节点发生冲突。重要的是,如果您在 React 流程之外修改 DOM,则必须确保 React 没有理由触及这些 DOM 节点。

\n
\n
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}\n
Run Code Online (Sandbox Code Playgroud)\n

我最初认为,当<App>使用新setState()调用进行反应重新渲染时,如果我们没有额外的div内容,select那么比较算法就会遇到麻烦,并且dom后面附加的元素select将被删除。但是,显然这并不是正在发生的事情。从代码来看:

\n
<App>                   |                 |<App> …
Run Code Online (Sandbox Code Playgroud)

javascript jquery ecmascript-6 reactjs

4
推荐指数
1
解决办法
277
查看次数

C中的getchar()完成而不按Enter键

从我之前的帖子中,我发现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时,应该打印第2getchar.但它最后打印,意味着所有getchar()s同时执行 - 这很奇怪.

  • 程序是否逐行执行?即在第三个getchar之后,printf()应该可以工作.但是当所有的getchar()都被执行时它终于工作了.

c io getchar

3
推荐指数
1
解决办法
3166
查看次数