CSS深入研究:display的恐怖故事解密

告别IMEI!手把手教你用UUID实现Android设备唯一标识(兼容Android 10-13) 本文详细探讨了在Android 10及以上版本中,如何构建合规且高可用的设备唯一标识方案以替代被限制访问的IMEI。文章深入分析了Android设备标识符的演变,并提供了基于UUID/GUID的完整实现策略,包括生成算法、多级持久化存储方案(如MediaStore)、权限处理以及版本兼容性实践,帮助开发者应对Android 10-13的隐私政策变化。 阅读详情

display作为一个最为恐怖的属性,没有之一,绝对不是欺骗3岁小孩,绝对是真实的。下面,就让我们看看这货的恐怖面貌。

display 值:

none :隐藏对象。(注意,与visibility:hidden不同,这货是彻底的消失,不保留物理空间。)

inline :指定对象为内联元素。

block :指定对象为块元素。

list-item :指定对象为列表元素。

inline-block : 指定对象为内联块元素。

inline-table :制定对象为内联表格。

table : 指定对象为表格元素 等同<table>

table-caption :指定对象为表格标题 等同<caption>

table-cell : 指定对象为单元格 等同 <td>(好吧,各种等同,我这人比较懒,以下省略各种不必要的文字,大家按照表格对号入座就行)

table-row :<tr>

table-row-group :<tbody>

table-column : <col>

table-column-group :<colgroup>

table-header-group : <thead>

table-footer-group : <tfoot>

campact :指定对象为块元素或基于内容之上的内联元素。

run-in :指定对象为块对象或基于内容之上的内联对象。

ruby :指定对象为表格脚注组。

ruby-base :指定对象为表格脚注组。

ruby-text :指定对象为表格脚注组。

ruby-base-group :指定对象为表格脚注组。

ruby-text-group :指定对象为表格脚注组。

box(flex) : 指定对象为弹性盒模型。

inline-box : 指定对象为内联块级弹性盒模型。

怎么样,头都晕了,有木有。这么一堆属性,码这么多字。不过别慌,下面让我来进行大胆的预测一下,当CSS4来的时候会不会某些属性就没了呢,我预测表格的一些值会被咔嚓,你要是问我依据,好吧这承认我只是看他们长得难看,所以才这么说的。然后据说ruby相关的属性值没有浏览器可以支持,尼玛呀,坑爹有木有啊。既然这样,那我们就渐渐得看清楚display这魔鬼有很大一部分是假装的。经过层层的扒掉这货的衣服,我们渐渐的看到几个常用的属性:

none、inline、block、inline-block。为什么常用呢?因为这几个家伙的兼容性是杠杠滴呀。这个时候inline-block微微一笑。我果断的用福尔摩斯赋予我的双眼把这货揪出来让大家围观。

那就让我们来探索下inline-block之谜。

不知道什么时候,display:inline-block; 已经深入web各地,[F12]揪出这货 轻轻的打开新浪轻博客(好吧,这是一个免费的广告)

哇,138个啊,真够多的。既然这货这么拽,那我们就来探个究竟。下面来看一段代码

  
  1. {display:inline-block;*display:inline;*zoom:1;} 

一段常见的代码,这里有几个疑问:

1.inline-block后的元素会产生空白,这是怎么回事?

2.IE6、7真的不支持inline-block吗?

要回答这两个问题,首先要弄清楚inline-block是什么。那么让我们来查查文档。

 Object is rendered inline,but the contents of the object are rendered as a block element.Adjacent inline elements are rendered on the same line,space permitting.

上段文字出自webplatform,一个年轻的权威网站。如果不够,还有

This value causes an element to generate an inline-level block container. The inside of an inline-block is formatted as a block box,and the element itself is formatted as an atomic inline-level box.

这段文字出自W3C。翻译整理一下:inline-block元素把自己变成特殊的inline元素,对于相邻的元素来说表现出inline的特点,允许空格。对于内部元素来说表现出block元素的特点,可以设置高度和宽度。

好吧,既然对于相邻的元素表现的是inline的特点,允许空格,那么自然在换行的时候产生空白。所以,这是正常的,这是inline-block元素具有inline元素的固有特性,不是所谓的bug。那么第一个问题就得到解答了。但是,大多数时候,我们不希望看到这空白。于是,网上流传了很多修复的方法。简单一点的一般是这样:

 
  1. {font-size:0;letter-spacing:-6px;} 

在inline-block的外层设置这样式,来清除间隙,原理是:

1.设置换行符or制表符or空格符的字体大小为0,从而使之失去宽度。

2.letter-spacing是一个修复IE6、7下某些元素inline-block后1px间隙的bug和不支持font-size:0;的浏览器而存在的。(不同的字体,有不同的宽度,查看细节,请点击《inline-block空隙–letter-spacing与字体大小/字体关系数据表》)

让我们来看看这个修复怎么样:

从图中我们可以发现在IE6、7下inline元素和inline-block元素始终有1px间隙,safari浏览器中元素重叠,并且所有浏览器的元素都没有对齐。看来要好好的调教一下,来看看一丝大神写的代码吧:

 
  1. .dib-wrap {  
  2. font-size:0;/* 所有浏览器 */ 
  3. *word-spacing:-1px;/* IE6、7 */ 
  4. }  
  5. .dib-wrap .dib{  
  6. font-size: 12px;  
  7. letter-spacing: normal;  
  8. word-spacing: normal;  
  9. vertical-align:top;  
  10. }  
  11. @media screen and (-webkit-min-device-pixel-ratio:0){  
  12. /* firefox 中 letter-spacing 会导致脱离普通流的元素水平位移 */ 
  13. .dib-wrap{  
  14. letter-spacing:-5px;/* Safari 等不支持字体大小为 0 的浏览器, N 根据父级字体调节*/ 
  15. }  
  16. }  
  17. .dib {  
  18. display: inline-block;  
  19. *display:inline;  
  20. *zoom:1;  
  21. } 

等,等灯,等灯^_^:

所有浏览器都正常啦,等等,火眼金睛的我突然发现了一个问题:

妖孽,别以为小心翼翼的重叠,我就看不见。以前一般都是和IE6这个魔鬼进行战斗,这次居然换着妖孽了。沉思一下先:造成空白间隙的是什么呢?

哦,是 [换行符]or[制表符]or[空格符]。我了个去呀,果断合并html代码成一行,调试。哇!合并后正常了。不过这肯定不是童鞋们希望看到的结果,一丝大神说:一切以牺牲结构来兼容表现的行为都是耍流氓!那怎么办,如果童鞋们要兼容safari,又不想根据不同情况修改letter-spacing的话,耍个小流氓,shift+tab,去掉[制表符],这样不管letter-spacing设置多大,都是no problem的啦。也就是让代码变成这样:

少了个缩进,无伤大雅,伤点小雅。

第一个问题回答得我口干舌燥啊。接下来,让我们来看看第二个问题,IE6、7支持inline-block吗?或许这个问题应该换个方式问。IE6、7支持css2.1中所说的inline-block吗?

答案是不支持,只是表现上的相近。这是通过触发浏览器的haslayout来实现的。那么就顺便提一句:dfdaf

haslayout是Windows Internet Explorer渲染引擎的一个内部组成部分。在InternetExplorer中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容。为了调节这两个不同的概念,渲染引擎采用了 hasLayout 的属性,属性值可以为true或false。当一个元素的 hasLayout属性值为true时,元素就会对自身的内容进行计算大小和组织,而不依赖于父元素。display:inline-block所触发的hasLayout是不可逆转的,所以当*display:inline的时候并不会使hasLayout=false。

温度PID控制PLC程序 温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值 立即下载

相关推荐

别再死磕U-Net了!用PyTorch手把手教你搭建ResUnet,搞定医学图像分割(附完整代码)

本文详细介绍了如何利用PyTorch搭建ResUnet模型,通过引入残差连接解决医学图像分割中的梯度消失、特征退化和细节丢失问题。与传统U-Net相比,ResUnet在Dice系数和收敛速度上均有显著提升,特别适合处理脑部MRI等复杂医学图像。文章还提供了完整的代码实现和关键训练技巧,帮助开发者快速掌握这一先进技术。

weixin_42552637的博客 327

POI异常处理:block[ 3 ] already removed - does your POIFS have ....

1、问题表现: 小弟写的一个数据接口,用PHP导出Excel(2003格式),然后使用JAVA导入。导出的文件打开正常,但是使用poi的 org.apache.poi.hssf.usermodel.HSSFWorkbook.HSSFWorkbook(InputStream s) throws IOException 方法读取文件流时报错,错误信息如下: block[ 3

深海酷酷鱼的专栏 3872

基于Arduino 的 FM 调频收音机

这是一个基于 Arduino 的开源的收音机项目,它具备一台标准收音机的全部功能,从控制部分到外壳都可以自己 DIY。在项目中,我们将介绍让 FM 收音机调谐器的 RDA5807 模块与 I2C 协议进行通信的方法,整个过程只需要两根线就可以与 IC 通信,接线非常简单。3D 打印的外壳也非常简洁。总之,是个非常简单和实用的项目,来试试吧!

ByteBox的博客 1642

关于block的循环引用,你看我就够了!

开篇: 如果你之前看过我block的其他的文章,你会更容易今天这篇博客的一些更深的解释,每篇只有一个知识点,基本上把这些都看了,block基本不会有什么问题的,基本都是掌握了. block的源码解读之变量捕获机制(capture) 从源码、ARC、MRC带你理解block的三大类型 深入理解block的底层之copy 深入理解block的底层之对象类型的auto变量 深入理解__block修饰符的底层实现原理 循环引用: 在平时开发过程中,block是我们经常使用的功能,如果不多加注意就会造

Lucky_Deng的博客 1919

Sen+MK趋势分析

Sen+MK趋势分析

地理研究与算法的博客 4万+

雷电模拟器+Python 3.11:手把手教你用Frida-dexdump给安卓APK脱壳(附GDA查壳)

本文详细介绍了如何使用雷电模拟器和Python 3.11配合Frida-dexdump工具进行安卓APK脱壳的全流程。从环境配置、工具安装到脱壳操作和问题排查,提供了包含30+关键截图的保姆级教程,适合零基础用户快速上手。重点讲解了Frida工具链的使用技巧和GDA查壳方法,帮助读者掌握移动应用安全分析的基础技能。

weixin_42568801的博客 328

CSS深入研究:display的恐怖故事解密(1) - inline-block

display作为一个最为恐怖的属性,没有之一,绝对不是欺骗3岁小孩,绝对是真实的。下面,就让我们看看这货的恐怖面貌。 display 值: none :隐藏对象。(注意,与visibility:hidden不同,这货是彻底的消失,不保留物理空间。) inline :指定对象为内联元素。 block :指定对象为块元素。 list-item :指定对象为列表元素。 inline-b...

weixin_30895603的博客 162

TIA博途WINCC的触摸屏VB脚本入门指南(嵌入式)

通过编写事件处理程序,您可以响应触摸屏元素的各种事件,并实现自定义的功能。本文将为您提供TIA博途WINCC触摸屏VB脚本的入门指南,帮助您了解基本的脚本编写和嵌入式开发。假设我们有一个名为"Button1"的按钮元素,当用户点击该按钮时,触发相应的事件处理程序,并在触摸屏上显示一条消息。然后回到触摸屏界面编辑器,在按钮元素的属性窗口中找到"按下"事件,并选择刚才创建的脚本文件作为事件处理程序。现在,当用户点击按钮时,触摸屏将执行相应的事件处理程序,并显示一条消息框,内容为"按钮被点击了!

CodeSageX的博客 4420

滑动窗口算法核心解析:从字母异位词到减零问题

滑动窗口是一种经典的算法优化思想,通过维护动态区间内的状态增量更新,避免暴力枚举带来的重复计算,能将时间复杂度从O(n*m)降至O(n)。在字符串匹配、数组连续子序列等高频算法场景中,滑动窗口有广泛应用,例如检测字母异位词、求解最小覆盖子串等问题。对于准备技术面试的开发者来说,掌握定长窗口与变长窗口的模板差异,理解窗口收缩与答案更新的时机,是快速识别题型并高效解题的关键。本文围绕三道典型题目展开,从异位词检测到减零问题,系统拆解滑动窗口的原理、代码实现、边界处理与常见陷阱,帮助读者在算法学习中建立清晰的窗口

weixin_33766805的博客 508

TPAMI 2025 | 从缺失碎片到杰作:基于上下文自适应扩散的图像修复

图像修复是一项具有挑战性的任务,尤其是要确保生成的内容与图像的现有部分无缝融合。尽管最近的扩散模型展现出了潜力,但它们在保持已知区域和未知(缺失)区域之间的连贯性方面常常遇到困难。这个问题源于扩散过程中缺乏明确的空间和语义对齐,导致生成的内容无法与原始图像平滑融合。此外,扩散模型通常依赖全局学习分布,而非局部特征,这使得生成的图像部分与现有图像部分之间存在不一致。在这项工作中,作者提出了ConFill,这是一个新颖的框架,引入了上下文自适应差异(CAD)模型,以确保在整个扩散过程中,已知区域和未知区域的中间

小白学视觉 240

RK3588芯片:ALSA音频通路下HDMI与耳机自动切换的技术探索

摘要:本文详细探讨了基于RK3588芯片的HDMI与耳机自动切换方案。文章首先剖析了ALSA音频架构的核心组件与工作原理,接着介绍了RK3588芯片的硬件特性及音频处理优势。重点阐述了自动切换的实现原理,包括硬件检测机制、ALSA驱动处理逻辑和软件控制流程,并提供了详细的配置步骤。同时针对常见问题如切换异常、音频质量下降等给出了解决方案。该方案通过合理配置设备树和ALSA文件,实现了音频输出的智能切换,提升了用户体验,展现了RK3588在音频处理领域的强大性能。未来随着AI音频技术的发展,该方案在智能家居、

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 266

CSS深入研究:display的恐怖故事解密(2) - table-cell

http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html 上集《CSS深入研究:display的恐怖故事解密(1) - display-inline》已经把display的属性列表拉出来溜了,发现在这个属性恐怖面貌其实都是脆弱的伪装。除了部分常用属性外,其他的都是传说哥。既然是传说哥,请不要迷恋。就让传说继续

SalmonellaVaccine的专栏 542

不同IP网段的PLC进行S7通信(PUT_GET)的具体步骤

不同IP网段的PLC进行S7通信(PUT_GET)的具体步骤 一般情况下,我们使用西门子的S7通信时都是将网络中的PLC的IP设置在同一网段,那么如果涉及到旧项目改造时,不方便修改IP地址,只能进行2个网段通信时,可以参考以下步骤: 准备条件: 2个路由器 CPU 1212C 主动连接 CPU 314C-2PN/DP 被动连接 网络搭建如下图所示: S7-1212C一侧 建立S7主动连接 ,IP地址:192.168.5.40,编写get/put 通信程序 S7-300 IP地址:192.168.0

Robot_PLC_HMI_Automation 2万+

CSS深入研究:display的恐怖故事解密(2) - table-cell(转)

http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html 上集《CSS深入研究:display的恐怖故事解密(1) - display-inline》已经把display的属性列表拉出来溜了,发现在这个属性恐怖面貌其实都是脆弱的伪装。除了部分常用属性外,其他的都是传说哥。既然是传说哥,请不要迷恋。就让传说继续传说着吧。这...

weixin_33918357的博客 104

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java操作excel异常处理-poi处理excel异常

文章来源:http://xcyk.iteye.com/blog/1837810 今天写了个excel操作类,在操作excel2007时报了个异常 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject     at org.com.java.micro.uti

eleven521的专栏 2764

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

恐怖!你敢看吗

第一个故事 你相信谁? 有一年登山社去登山,其中有一对感情很好的情侣在一起. 当他们到山下准备攻峰时, 天气突然转坏了,但是他们还是要执意的上山去. 于是就留下那个女的看营地,可过了 三天都没有看见他们回来. 那个女的有点担心了,心想可能是因为天气的原因吧. 等呀 等呀,到了第七天,终于大家回来了,可是唯独她的男友没有回来. 大家告诉她,在攻峰 的第...

weixin_34268310的博客 215

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

display:inline-block后出现上下错位的问题解决办法

每个元素都要有内容,然后再根据需要设置vertical-align:top|middle

炯炯灯的博客 2655

display的神奇

首先,所有主流浏览器都支持 display 属性。其次,我们都知道display 属性规定元素应该生成的框的类型。默认值:inline 我们常用的display属性值有: inline block inline-block none 把 display 设置成 none 不会保留元素本该显示的空间,但是 visibility: hidden 还会保留。 何为 display 复杂的定义不做赘述,...

Hard_work_的博客 320

WebKit 技术内幕之浏览器与WebKit内核

微信公众号:爱写bugger的阿拉斯加如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 此文章是我最近在看的【WebKit 技术内幕】一书的一些理解和做的笔记。而【WebKit 技术内幕】是基于 WebKit 的 Chromium 项目的讲解。 第一章 浏览器和浏览器内核 WebKit 内核是苹果2005年先开发并提出开源的,后面...

weixin_33709219的博客 576
上一篇: JavaScript学习笔记(三)
下一篇: java.io.File中的pathSeparator与separator的区别(z)
轻鸿飘羽
博客等级 码龄16年 124粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值