html - 显示类型被未知来源覆盖
问题描述
我有一个包含三个元素的容器:一个图像和两个 div:
我希望所有图像都是内联块,并在他们的类中指定:
.first_image {
display: inline-block;
height: 20px;
width: 20px;
}
.first_div {
width: 100%;
display: inline-block;
}
.second_div {
width: 52px !important;
height: 40px !important;
display: inline-block;
background-color: #3798D4;
}
.container {
display: inline-flex;
}
但是,当我运行和检查时,这些是实际属性:
- 容器(类 case-input 是 .container)
- 第一张图片
- 第一个 div
- 最后一个 div(这个有类
.edit_pen_container
并包含一个按钮)
问题是 1. 显示为flex
虽然应该是inline-flex
2.、3. 和 4. 显示为block
虽然它们应该是inline-block
。我真的不明白为什么它会改变。此外,该属性没有被划掉,所以它似乎没有被覆盖。
顺便说一句,所以你可以理解我的逻辑,img
将留在那里,div 1 的宽度为 100%,因为它必须占用 div 的其余部分。当用户将鼠标放在 div 1 中时,会出现 div 2 并将采用固定宽度(52px),并且 div 1 将缩小以允许 div 2 占据它需要的空间。也许我的逻辑是错误的,但这就是我想要做的。
所有 HTML 元素都是通过 javascript 添加的,所以我没有要显示的 DOM 层次结构。
解决方案
你写了:
问题是 1. 显示为
flex
虽然它应该是inline-flex
2.、3. 和 4. 显示为block
虽然它们应该是inline-block
......此外,该属性没有被划掉,所以它似乎没有被覆盖。
所以让我们澄清一下:
元素 #1 (
.container
) 是一个弹性容器。您是说问题在于您声明display: inline-flex
了 ,但浏览器将元素呈现为display: flex
.元素#2、#3 和#4 是#1 的流入子元素。这意味着它们是弹性项目。您是说问题在于您已将这些项目设置为
display: inline-block
,但浏览器将它们呈现为display: block
.
好的。让我们一一讨论这两点。
为什么要display: inline-flex
计算display: flex
?
因为这是 flexbox 规范所要求的。
§ 3. Flex Containers:
flex
和inline-flex
显示值如果一个元素的指定
display
是inline-flex
,那么它的display
属性flex
在某些情况下计算为:CSS 2.1 第 9.7 节中的表格被修改为包含一个额外的行,inline-flex
在“指定值”列和flex
“计算值”列中。
因此,在某些情况下inline-flex
计算为flex
,如上面摘录中链接到的表中所述。这就是您的代码中发生的事情。从技术上讲,它不是一个覆盖,这就是为什么你没有看到被inline-flex
划掉的原因。
为什么要对弹性项目进行display: inline-block
计算?display: block
同样,因为这是 flexbox 规范所要求的。
弹性项目的
display
值是块化的:如果指定display
的生成弹性容器的元素的流入子项是内联级值,则它计算为其块级等效值。
另请注意,您无法控制display
弹性项目的值。一旦你让一个元素成为一个弹性容器,display
弹性项目的属性就由弹性算法控制。display
浏览器会忽略对弹性项目设置规则的尝试。这就是您在代码中看到的内容:display: inline-block
被忽略(但同样,技术上没有被覆盖,这就是为什么inline-block
没有被划掉)。
推荐阅读
- tensorflow - 在 Tensorflow 上使用远程 grpc 会话时如何在本地服务器上保存参数?
- laravel - 拉拉维尔。关系中的两张表,选择许多照片
- git - Gitlab CI 删除用户附件和上传的文件
- c - C 语言转换数字基数
- python - 这些在aioredis中发布/订阅的方法是否等效?
- java - 当我执行点击事件时,我想获取 GridPane 的索引
- flutter - 颤振 json_serializable tojson 无法正常工作
- amazon-web-services - How to secure API gateway in Website and mobile application?
- javascript - List Items individually with labels
- php - 如何在ajax成功中使用数据表?