css inline-block属性各浏览器兼容以及水平间隙问题解决方案

本章给大家介绍css inline-block属性各浏览器兼容以及水平间隙问题解决方案。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

inline-block属性 说明:

设置这个值之后对象自己呈递为内联对象,但是对象内的内容作为 block boxes 呈递。也就是说设置了这个值的元素就等于可以在一个可以包含 block boxes的 inline box元素。而话说IE6、7虽然是能支持 inline-block 的,但是在他们眼里display:inline-block只是触发layout 的一个条件,而非W3C规定的东西。不过我们正好可以利用IE的layout来模拟实现display:inline-block的效果。

inline-block各个浏览器的兼容方案

有两种方法,都是先触发IE的layout,然后再定义 display:inline,让块元素自身呈递为内联对象,如下:

立即学习“前端免费学习笔记(深入)”;

1. 其中在所有能触发layout的属性中,排除position:absolute 和浮动以及width,height之后,能用的就只有display:inline-block了,如下:

fn-ib{display:inline-block;}fn-i{*display:inline;}

注意 两个display 要先后放在两个 CSS 声明中才有效果,如果先定义了 display:inline-block,然后再将 display 设回 inline 或 block,layout 不会消失。

2. 第一种方法要放在两个CSS声明中,有时稍不注意就可能搞错了,出发IE的layout还有 zoom:value,代码如下:

fn-ibz{display:inline-block;*display:inline;*zoom:1}

从上我们看出IE6、7是支持属性 inline-block的,只是没有实现W3C的效果,所以我们利用layout再display:inline来模拟inline-block属性的效果。

好了,现在有解决各个浏览器 inline-block 的方案了,接下来要解决是:在不同浏览器下看下面的例子:

1.jpg

inline-block元素在不同浏览器下有间隙是inline自身的性质,不是bug

然后我们发现在支持display:inline-block属性的浏览器中 inline 和 block 元素 display:inline-block 后均会产生水平空隙;而在IE67以及IE(Q)模拟 display:inline-block 后分两种情况:模拟之后的块元素没有间距,而内联元素有间隙。为什么?这里再补充一个知识点:inline元素在默认状态下排列都是有间隙的。所以以上现象就又如下解释了:

支持display:inline-block属性的浏览器,其元素本身就相当于inline元素,所以现代浏览器中都有间隙;而模拟的方案中,因为虽然将块元素设置 display:inline 能使其想行内元素一样水平排列,但是block 元素还是block 元素,不会真的变成inline 元素,所以就没有空隙。

而产生空隙的根本原因是 HTML 中的换行符、空格符、制表符等字符产生了空白符。

inline-block之间的水平间隙问题解决方案

以上我们知道产生间隙的根本原因是HTML 中的换行符、空格符、制表符等字符,俺么我们把标签与标签之间的空格去掉,就不会有问题了么?所以代码如下:

HTML代码如下:

内联元素 内联元素 内联元素 内联元素
块元素
块元素
块元素
块元素

效果图:

1.jpg

改变DOM结构来解决inline-block之间的间隙问题

以上DEMO代码我是做了处理的,所以我们就看不到间隙。但是问题由来了:

如果是静态的话我们这么做确实没多大问题,假如是后台直接生成的呢?或者以后维护同事看到这代码怎么这么写的,改回来了呢。所以用CSS解决还是最好的途径。我第一次看到这个情况第一反应就是用margin负值来解决,后来知道产生空隙的根本原因之后,觉得margin负值方法虽然能够解决,但是没有对症下药,间隙产生原因的是HTMl间的换行符、空格符、制表符等字符,而间隙会随着字体大小等属性变化而变化。所以就可以用CSS控制字符大小来找出一个。所以参考YUI3中解决的方案,我得到如下代码:

.f-w-p-parent{    font-size:0;    letter-spacing:-4px;    *letter-spacing:normal;    *word-spacing:-1px;}.f-w-p-inner{    font-size:12px;    letter-spacing:normal;    *word-spacing:normal;    vertical-align: top;}

效果图:

3.jpg

CSSinline-block的间隙的方案

然后我们分析每一行代码的作用:

font-size的作用:既然是字符引起的,当然是把他们的font-size设置为0,然后再元素内font-size大小设回原来的大小。除了IE6、7以及低版本的chrome和 Safari的其他浏览器inline-block间隙到这一步就没了(低版本的chrome因为设置font-size:0之后,不能让文字自由伸缩,所以不推荐)

word-spacing的作用:在IE6、7以及IE(q)模式下,始终有1px的间距,然后我们就利用word-spacing:-1px来解决(单词之间的距离,只对英文有用,中文没有单词这概念),然后再元素内设回normal。当然使用margin:0 0 0 -1px;也是可以的(貌似代码还少了…)

letter-spacing的作用:剩下就只有低版本的chrome和 Safari了,letter-spacing是调整文字之间的间距,因为letter-spacing跟font-size和font-family甚至不同浏览器都是有差别的,所以按照 《letter-spacing与字体大小/字体关系的数据表》上面的数据来设置,就能将间隙取消。然后因为letter-spacing和word-spaacing在一起容易出事,所以加了 *letter-spacing:normal; 这句代码。

vertical-align:top的作用:最后讲的这个跟间隙无关,设置vertical-align:top是为了让 inline-block 元素以top基线对齐。vertical-align 属性只在 inline、inline-block 元素有效 。

inline-block的优点

这里不说inline-block布局比浮动布局节省浏览器资源,我们就得抛弃浮动布局,投向inline-block布局的怀抱(而且官网也没这个说法),毕竟一个事物的出现毕竟有它存在的意义的,而且浮动布局也是认识度最高的布局方法。所以还是那句话,具体情况具体分析,明明使用浮动布局结构更清晰的,你非得用 inline-block而增加了大量亢余代码,就算 inline-block布局 真的像传说中的那样最不耗资源,但是你html代码增加了不也是耗资源了么。

就算有,我也觉得不大。所以改用绝对定位就用绝对定位,改用浮动就用浮动,如果碰到一个情况使用 inline-block 能更好的解决问题,那就大胆的用吧。毕竟inline-block相较与浮动和绝对定位还是有一些有点的。

能使用vertical-align和text-align实现垂直、水平、两边、基线等等对齐,而且还是自适应的哦。

因为自身原因,所以特别适合流体布局。高度和宽度不用定死。

以上就是css inline-block属性各浏览器兼容以及水平间隙问题解决方案的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1611686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 02:29:03
下一篇 2025年12月24日 02:29:29

相关推荐

  • cursor怎么用?CSS中cursor属性的使用方法以及可选值的解析

    在页面布局时,css是工作中必不可少的部分,常听别人讲:html是一个人素颜的样子,加了css后是一个人化妆以后的样子。这句话通俗易懂,很好的诠释了css与html之间的关系。css中的属性非常多,今天就着重讲一个属性,即css cursor属性,以及它的很多可选值,比如:cursor 手型 就是用…

    好文分享 2025年12月24日
    000
  • CSS中如何实现图片与文字垂直居中,都有哪些方式?

    在工作时,我们经常会用图片和文字来布局,但是细心的小伙伴会发现,html默认情况下,图片置顶对齐,文字置底对齐,所以当图片高,文字低,就不能居中对齐。为了页面的美观,我们习惯设置图片和文字对齐,那css中如何设置文字与图片垂直居中呢?都有哪些方式让文字与图片垂直居中呢? 方法1:简单粗暴的方式,直接…

    2025年12月24日
    000
  • HTML的列表样式可以去除吗?怎么去掉li前面的小黑点

    在工作中,我们经常会用到列表,列表又分为有序列表和无序列表,无序列表在页面中会显示实心圆点,有序列表会显示序号,但是,有时候我们不要它,觉得是多余的,不需要列表前面的点和序号显示出来,那可以去除列表样式吗?怎么去掉li前面的点呢?接下里,举例并且用代码和图片进行讲解。 看这个例子,我用无序列表写了古…

    2025年12月24日 好文分享
    000
  • css中:after和:before的作用及使用方法

    本章给大家介绍css中:after和:before的作用及使用方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1.  :before 和 :after 的主要作用是在元素内容前后加上指定内容,示例: HTML代码: 你好 CSS代码: 立即学习“前端免费学习笔记(深入)”; p…

    2025年12月24日 好文分享
    000
  • 深入理解CSS盒子模型含义和原理

    很多前端人员认为css太简单了,没必要花那么长的时间学习,其实不然,一个前端开发人员把css用好以后,效率和用户体验都会提升不少,最近打算深入的学习一下css,以便遇到问题时,才知道如何下手,从而迅速的对症下药。接下来主要介绍css的盒子模型。 什么是盒子模型 说起盒子模型,作为前端开发的我们,相信…

    2025年12月24日
    000
  • 如何使用CSS和GSAP实现有多个关键帧的连续动画(附源码)

    本篇文章给大家带来的内容是关于如何使用css和gsap实现有多个关键帧的连续动画(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定…

    2025年12月24日
    000
  • 深入理解CSS之overflow:hidden,scroll,visible

    在布局时,如果遇到内容超过盒子大小时,可以用css属性overflow将超出对象的内容实现隐藏,同时也可以将超出部分显示或者隐藏滚动条的作用,接下来我们来了解学习css overflow样式。 一、Overflow语法值 overflow : visible | auto | hidden | sc…

    好文分享 2025年12月24日
    000
  • 如何使用纯CSS实现一只会动的手(附源码)

    本篇文章给大家带来的内容是关于如何使用纯css实现一只会动的手(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 dom,容器中…

    2025年12月24日
    000
  • 如何用CSS纯代码画一个旋转的太极图(附代码)

    这是一个中国人都非常熟悉的图案——太极图,它分为阴阳两级,会旋转(用到css3 animation动画属性),此图通过css3纯代码实现,它由 若干个小圆组合而成,适合初学css3的人练练手,娱以 致学,增加学习的乐趣。 HTML部分: CSS部分: .square { width: 400px; …

    2025年12月24日
    000
  • 如何用css画正六边形?用css画正六边形的两种方法(代码实例)

    本章给大家介绍如何用css画正六边形?用css画正六边形的两种方法(代码实例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在之前要先了解一下正六边形内角和边的关系,正六边形的每个内角是60deg,如图(√3其实是根号3): 方法一:原理把正六边形分成三部分,左中右分别是:bef…

    2025年12月24日 好文分享
    000
  • CSS实现四个方向箭头的代码

    本篇文章给大家带来的内容是关于CSS实现四个方向箭头的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 自学教程(如约智惠.com) i { border:solid black; border-width:0 3px 3px 0; display:inline-block; p…

    好文分享 2025年12月24日
    000
  • css如何实现footer定位(完整代码)

    本篇文章给大家带来的内容是关于css如何实现footer定位(完整代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 css实现footer定位 Document html,body{ width: 100%; height: 100%; margin: 0; padding: …

    好文分享 2025年12月24日
    000
  • 什么是浮动以及浮动的清除方法

    本章给大家介绍什么是浮动以及浮动的清除方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、浮动 说浮动就必须提及一下文档流,html当中的元素按照从左到右,从上到下的顺序进行排列称之为文档流,也就是正常排列。 而浮动是什么呢?浮动会让元素脱离文档流,假如A元素浮动了,原本排在该…

    2025年12月24日 好文分享
    000
  • css实现横向滚动条的两种方式(代码实例)

    本章给大家介绍用css实现横向滚动条的两种方式。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 html代码: 全部 Adobe 微软 会计 绘画 Adobe 微软 会计 绘画 一、 原始css + jquery 实现横向滚动条(原生js可以实现,为了方便才用的jQuery) css…

    好文分享 2025年12月24日
    000
  • CSS定位position的多种方式以及不同方式之间的区别

    在进行前端布局的时候,我们经常会用到定位,定位是css中重要的一部分,定位是用定位属性position来进行定位的,position的值也有很多,具体它有如下几个属性值。常见的属性有如下所示: 值描述 absolute  生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。元素的位…

    好文分享 2025年12月24日
    000
  • 如何使用纯CSS实现一把剪刀的效果(附源码)

    本篇文章给大家带来的内容是关于如何使用纯css实现一把剪刀的效果(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 dom,容器…

    2025年12月24日
    000
  • 如何使用CSS在线字体和D3实现Google的信息图

    本篇文章给大家带来的内容是如何使用css在线字体和d3实现google的信息图 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 dom…

    2025年12月24日
    000
  • CSS中什么是BEM 命名规范?

    本章为大家带来css中什么是bem 命名规范?,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一 什么是 BEM 命名规范 Bem 是块(block)、元素(element)、修饰符(modifier)的简写,由 Yandex 团队提出的一种前端 CSS 命名方法论。   &#82…

    好文分享 2025年12月24日
    000
  • css为select添加样式(无脚本)实现

    改变select默认的样式,一般情况下通过ul,li来模拟来实现。 有很多jquery插件就是通过这样的方式来改变select默认样式的。 根据程序哥哥那边的反映,此种方式在form提交后无法获取数据,后来经过实验,用了不同的js/jquery插件,都是同样的结果:无法获取数据。 后来看一篇外国人写…

    好文分享 2025年12月24日
    000
  • css实现双飞翼布局的四种方法(附代码)

    本篇文章给大家带来的内容是关于css实现双飞翼布局的四种方法(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 圣杯布局、双飞翼布局效果图 从效果图来看圣杯布局、双飞翼布局效果是一样一样的。圣杯布局、双飞翼布局就是左右两侧宽度固定,中间内容宽度自适应,即100% 圣杯布局 *…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信