html分块时边距的设置,html – 文本节点后第一个块的边距(垂直空间)?

我不确定你是否会认为这是对你的问题的完整答案,因为我知道你正在使用< td>在您的示例中,< td>之间存在一个差异.和< dd>或者< li>元素是< td>的事实.在不破坏< table>的情况下,元素不能与其周围元素相抵消具体行为.但至少我可以回答你的第三个问题的一部分:

If it’s true that it’s not possible to define a CSS rule which creates the same format for both kinds of HTML…

事实并非如此,你总是可以渲染一个浮动:前面的伪元素,宽度为100%;设置,并设置兄弟的一半边缘< p>它上面的元素.

dd {

border: 1px dashed lightblue; /* this line is for demonstration purposes only */

}

dd:before {

float: left;

content: "";

width: 100%;

margin: 0.5em;

}

An introductory sentence as a text node.

A further sentence as a paragraph.

An introductory sentence as a paragraph.

A further sentence as a paragraph.

这引入了一个空的“虚拟”段落,它只影响< dd>的直接文本节点.作为< p>元素只会执行their automatic margin collapsing magic而不是向下移动.我认为这证明至少可以定义一个CSS规则,它为这两种HTML创建相同的格式.

这是如何工作的,或者至少我理解这是如何工作的. W3C在CSS规范中有一个例子,它告诉我们问题中的文本节点必须是anonymous block box,因为它是一个文本节点,在一个带有display:block的框内呈现;设置,< dd>,它有一个带display:block的兄弟;设置,< p>.

通过添加伪元素 – 在此匿名块框内呈现(它必须是,因为否则它将永远不会像内联元素一样,或者它可能呈现为两个anonymous inline boxes,没有包含块框) – 但无论如何,我们最终得到两个匿名内联框(伪元素和文本节点).

下一步是获取这些匿名内联框中的第一个,伪元素,并通过向左浮动将其从正常流中取出,然后将其宽度设置为100%,并使其占据与高度匹配的高度兄弟&< p>的余量(我通过设置< p>的余量的一半来完成,但你可以通过设置与< p>的匹配的高度或下边距来做同样的事情.保证金).

现在前面的文本节点有一个人为的上边距.问题仍然存在,为什么这不会影响< p>如果没有前面的文本节点?我认为这是因为 – 因为没有前面的文本节点 – 伪元素本身被渲染为应用它的元素内的空匿名块框(作为伪元素,内容总是在应用它们的元素内部呈现),这与渲染空的< span>基本相同< p>之前的元素.

这是一个概念证明:

dd {

border: 1px dashed lightblue;

}

span {

float: left;

height: 1em;

width: 100%;

background-color: lightgray;

}

dd:not(:first-child)::before {

content: "";

float: left;

height: 1em;

width: 100%;

background-color: lightgray;

}

The dashed light blue line marks the paragraphs margin Box,the light grey Box is the span.

The dashed light blue line marks the paragraphs margin Box,the light grey Box is the pseudo element.

这个“人工边缘”是一个左浮动的块框(在伪元素的情况下是匿名块框)在其包含元素内.如果他们需要,所有其他的块盒都将向下移动(因为它们是根据W3C floating spec假设浮动盒子没有为它们留下任何空间),这只发生在浮动盒开始超出它的边缘时隐藏,并且它不会在这个特定问题的解决方案中发生,因为我特意将人工边缘设置为与< p>的实际边缘一样高.

我认为秘密在于W3C浮动规范的这一部分,这有点难以理解:

Since a float is not in the flow,non-positioned block Boxes created

before and after the float Box flow vertically as if the float did not

exist. However,the current and subsequent line Boxes created next to

the float are shortened as necessary to make room for the margin Box

of the float.

A line Box is next to a float when there exists a vertical position

that satisfies all of these four conditions: (a) at or below the top

of the line Box,(b) at or above the bottom of the line Box,(c) below

the top margin edge of the float,and (d) above the bottom margin edge

of the float.

Note: this means that floats with zero outer height or negative outer

height do not shorten line Boxes.

If a shortened line Box is too small to contain any content,then the

line Box is shifted downward (and its width recomputed) until either

some content fits or there are no more floats present. Any content in

the current line before a floated Box is reflowed in the same line on

the other side of the float. In other words,if inline-level Boxes are

placed on the line before a left float is encountered that fits in the

remaining line Box space,the left float is placed on that line,

aligned with the top of the line Box,and then the inline-level Boxes

already on the line are moved accordingly to the right of the float

(the right being the other side of the left float) and vice versa for

rtl and right floats.

我理解这是指“在浮动框垂直流动之前和之后创建的非定位块框,就像浮动不存在一样”,因此< p> s,非定位块框不应受到浮箱子.

但这并不意味着什么.相反,它指出,当盒子向左浮动时,在浮动盒子的右侧创建一个线框,填充浮动盒子右侧和容纳盒子右侧之间的空间.并且在该行框内部存在块框,该框是随后的< p>元件.如果那< p>元素可以适合满足上述四个条件的空间,它将位于行框中的浮点旁边.

由于浮点数设置为100%的宽度,因此< p>不适合浮动的盒子旁边,它坐在它的线框内,向下移动到下一行,它以某种方式神奇地决定部分地遵守规则的第一部分:“之前创建的非定位块盒和在浮动框垂直流动之后,好像浮动不存在“,这似乎只是边缘的真实,因为只要浮动框超出边距,块框就会开始向下移动,也许是因为它位于还有一个线盒..

现在除了< td>之外的所有内容如果通过将包含内容的元素与其包含元素相抵消可以轻松完成,则可以轻松地将顶部添加的空间消失,这将非常简单.

dd {

position: absolute;

margin-top: -1em;

}

dd:before {

float: left;

content: "";

width: 100%;

margin: 0.5em;

}

div {

position: relative;

/* everything below this line is for demonstration purposes only */

border-top: 1px dashed lightblue;

height: 80px;

}

An introductory sentence as a text node.

A further sentence as a paragraph.

An introductory sentence as a paragraph.

A further sentence as a paragraph.

我认为回答第二个问题,至少对于< dd>和< li>元素,甚至允许前一个文本节点中的内联元素.

如果你想在< td>内进行此操作你必须开始管理< td>或< table>高度其他方式,因为你必须在< td>内使用绝对定位.并通过将表格单元格设置为display来阻止表格增长的默认表格行为:block; (或者通过在< td>中渲染一个额外的< div>并将其用作块级元素,但这也会破坏默认的单元格增长行为).

table

{

width: 100%;

min-height: 80px;

float: left;

}

dd {

position: absolute;

margin-top: -1em;

}

dd:before {

float: left;

content: "";

width: 100%;

margin: 0.5em;

}

td {

position: relative;

display: block;

border-top: 1px dashed lightblue; /* this line is for demonstration purposes only */

}

An introductory sentence as a text node.

A further sentence as a paragraph.

An introductory sentence as a paragraph.

A further sentence as a paragraph.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现连麦_微信重磅更新,视频号直播连麦打赏美颜上线,新增巨大流量入口

12月23日晚&#xff0c;微信迎来重大改版&#xff01;在最新7.0.20版本的微信中&#xff0c;视频号大招不断&#xff0c;不仅上线了连麦功能&#xff0c;支持美颜瘦脸、打赏等功能。此外&#xff0c;微信还给视频号开放了两个重大入口&#xff0c;包括微信个人名片和“发现”ta…

VMware Workstation 网络设置解释三种

一、NAT Network Address Translation&#xff0c;网络地址转换&#xff0c;NAT模式是比较简单的实现虚拟机上网的方式&#xff0c;NAT模式的虚拟机时通过物理电脑上网和交换数据的。 在NAT模式下&#xff0c;虚拟机的网卡连接到物理机的VMware上&#xff0c;此时VMware软件的…

cuda 核函数 for循环_【CUDA 基础】4.4 核函数可达到的带宽

Abstract: 本文通过矩阵转置这一个例子&#xff0c;调整&#xff0c;优化核函数&#xff0c;使其达到最优的内存带宽Keywords: 带宽&#xff0c;吞吐量&#xff0c;矩阵转置开篇废话下面是废话&#xff0c;与本文知识无关&#xff0c;可以直接跳到下面红字处开始本文知识的学习…

小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容

本来呢&#xff0c;我是有专门整理小程序恶心bug的文章的&#xff0c;每次只要添加汇总就好&#xff0c; 但是呢&#xff0c;鉴于这个问题的恶心程度&#xff0c;所以我把他单独拿出来说了。 ——————————————--------------------------------------------------产…

学徒学计算机,那个有能力的高人愿意收我做学徒啊,我是学计算机的

类似问题答案我学的是计算机专业&#xff0c;南京有那些学校招这个专业啊&#xff1f;跟随 已跟随 取消 确定 你是说去学习还是去工作&#xff1f; 如果工作&#xff0c;现在很多对学位有一定要求&#xff0c;一般都要本科以上&#xff1b; 如果是学习&#xff0c;那也得看你自…

Linux磁盘分区及要求

一、分区 1、磁盘分区有主分区&#xff0c;扩展分区和逻辑分区之分。一块磁盘最多有4个主分区&#xff0c;其中一个主分区的位置可以用一个扩展分区替换&#xff0c;在这个扩展分区内可以划分多个逻辑分区。 2、一块磁盘最多只能有一个扩展分区&#xff0c;扩展分区不能直接使…

二分查找和二叉查找树

2019独角兽企业重金招聘Python工程师标准>>> 1 二分查找 算法思想&#xff1a; 二分查找要求元素排列有序。首先&#xff0c;假设表中元素是按升序排列&#xff0c;将数组中间位置的元素与查找关键字比较&#xff0c;如果两者相等&#xff0c;则查找成功&#xff1…

springboot判断有没有库_Springboot 使用JPA @Query 注解 查询语句条件 有可能为空,Oracle数据库...

网上查了很多资料都是下面的方法,但是不适用于OracleQuery(value "select * from xxx where if(?1 !,x1?1,11) and if(?2 !,x2?2,11)" "and if(?3 !,x3?3,11) ",nativeQuery true)List find(String X1,String X2,String X3);——————————…

台式计算机技术方案,2017年4月自考02316计算机应用技术真题及答案

本文提供的是2017年4月自考02316计算机应用技术真题及答案&#xff0c;真题不仅能帮助考生复习巩固学到的知识&#xff0c;还能让考生了解以往考试难易程度&#xff0c;真正掌握一套真题那么考试也不用担心了。要考试的你一定要多多练习啊。2017 年 4 月高等教育自学考试全国统…

Linux磁盘编号

一、IDE接口磁盘 Linux的编码规则是 /dev/hd* -------------------------------hda 第一块盘 -------------------------------------------hda1 第一分区&#xff0c;hda2 第二分区&#xff0c;hda3 第三分区..... -------------------------------hdb 第二块盘 …

Linux挂载点和文件系统类型介绍

一、挂载点 Mount Point 这是Linux下访问磁盘分区的入口&#xff0c;即如果要往分区里写入数据&#xff0c;就必须通过/boot入口来写入&#xff0c;这一点和windows是不同的&#xff0c;因为在安装Linux时&#xff0c;Mount Point项填写 /boot二、文件系统类型 1、ext2/3/4&…

pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)

我需要从我的模块中调用Python函数并为其设置两个参数&#xff1a;int和array。在现在我在调用这个函数的时候遇到了segfault&#xff0c;我不知道我做错了什么。有人能指出我的错误在哪里吗&#xff1f;在函数在我的Python模块中应用程序副本. 如果我从Python代码调用它&#…

理解lua中 . : self

文章目录[点击展开](?)[] 前言点号定义和调用冒号定义和冒号调用运行结果相互调用相互调用运行结果总结前言 在LUA中&#xff0c;经常可以看到&#xff1a;. self&#xff0c;今天在CSDN上看到一篇博客写的很清楚&#xff0c;转载过来 原文出处&#xff1a;http://blog.csdn.n…

适合初中文凭学的计算机技术,初中毕业学啥技术好 最吃香的手艺

很多初中毕业的初中生因为成绩不是很理想&#xff0c;不能上一所理想的高中&#xff0c;所以选择学一门技术&#xff0c;那么初中毕业学啥技术好呢&#xff0c;哪些手艺未来比较吃香呢&#xff0c;下面小编为大家分析一下初中毕业应该学什么手艺。初中毕业学哪些技术发展好汽修…

SecureCRT配置

一、下载 路径&#xff1a;http://www.pc6.com/softview/softview_24396.html 里面有破解教程 二、配置 1、选择仿真环境养眼的绿色字体黑色背景配置&#xff0c;选择 traditional option->Global options –>default session -> edit default settings -> 修改…

左室短轴切面_一文读懂心脏超声基本切面

一. 本文出现的英文简称二.超声心动图基本切面采用与心脏相互垂直的三个基本平面&#xff0c;主要观测心脏各房室腔内径、容积和室壁厚度及其相关解剖结构运动状态、功能等。检查中探头最常放置的位置包括心底部、心尖部、剑突下&#xff0c;锁骨/胸骨上窝等。心脏超声检查中探…

怎么用计算机弹c哩c哩,计算器音乐c哩c哩乐谱 | 手游网游页游攻略大全

发布时间&#xff1a;2016-06-29铲子骑士乐谱有什么用 铲子骑士乐谱卖不了怎么办.不少铲子骑士玩家收集了一些乐谱,那么这些乐谱功能是什么呢?下面99单机网小编给大家介绍铲子骑士乐谱有什么用 铲子骑士乐谱卖不了怎么办. 乐谱可以卖钱,还可以更换游戏中的音乐 ...标签&#x…

Windows 7 资源管理器搜索Channel 9 视频

在Windows 7 中Federated Search 可以通过OpenSearch 协议访问到远程数据资源&#xff0c;也就意味着用户可以使用资源管理器&#xff08;Windows Explorer&#xff09;搜索并浏览远程数据。本篇我们将制作一个搜索连接器&#xff08;Search Connector&#xff09;查找Channel …

python django flask介绍_django和flask哪个值得研究学习

对于初学者来说&#xff0c;找到一个好的框架来学习或者项目开发都是非常有必要的&#xff0c;而当你有一定开发经验后&#xff0c;你应该选择适合当前业务需要的框架。我这里并不想探讨哪个框架好哪个不好&#xff0c;这个永恒的话题就跟探讨“世界上哪种编程语言最屌”是一样…

sts html视图编辑器,免费的HTML可视化编辑器HBuilder前端开发编辑器 | 老疯子

互联网上几款比较热门的编辑器Dreamweaver、Notepad、Sublime Text、Vim、Emacs等&#xff0c;这些或许你用过其中之一或许听说过它们。这些都是国外人员开发的有些甚至被公认为是最受专业程序员喜爱的代码编辑器(Vim和Emacs)。都是国外的&#xff0c;那国内的呢&#xff1f;当…