博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
display的inline,block,inline-block
阅读量:5939 次
发布时间:2019-06-19

本文共 1358 字,大约阅读时间需要 4 分钟。

hot3.png

    之前用的display属性的值只会用inline或者block,这两个值的显示形式如下:

      (1)inline:设置了display:inline;属性的元素,不会自动换行,并且即使元素设置了宽高也没有效果,属于行内元素,典型的inline元素有<span>, <a>, <label>, <input>, <img>, <strong> 和<em>
      (2)block:设置了display:block;属性的元素,会自动换行,并且可以设置其高宽,属于块级元素,典型的block元素有:<div>, <p>, <h1>, <form>, <ul> 和 <li>
      例子:
      <style>
   ul{list-style: none;}
   li{display: inline;width:200px;height: 30px;text-align: center;line-height: 30px;background: #ccc;}
    </style>
    </head>
    <body>
       <ul>
          <li>test1</li>
          <li>test2</li>
          <li>test3</li>
          <li>test4</li>
       </ul>
    </body>

实现效果:

152716_H2iX_2418447.png

可以看到,即使我们给每一个li元素设置了相应的宽和高,显示的效果依然是背景色只是包裹li元素内的字所撑开的宽度和高度

如果将其改为display:block;效果如下:

152823_F8Op_2418447.png153317_o2FW_2418447.png

默认情况下,inline-block的表现形式和inline一样,只有在给元素设置了宽和高的时候才会显示出差别

然而到了这里,故事并没有结束:

现在一些流行的浏览器都支持inline-block,但是IE6&7并不支持,但使用display:inline-blockIE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症对块元素设置display:inline-block属性无法实现inline-block的效果。这时块元素仅仅是被display:inline-block触发了layout,而它本就是行布局,所以触发后,块元素依然还是行布局,而不会如Opera中块元素呈递为内联对象。

解决方案(1):

 ul{list-style: none;}

   li{display: inline-block;width:200px;height: 30px;text-align: center;line-height: 30px;background: #ccc;border:1px solid black;}
   li{display: inline;}

即设置两次,这个hack只是针对IE7以下版本.

解决方案(2):

ul{list-style: none;}

   li{display: inline;zoom:1;width:200px;height: 30px;text-align: center;line-height: 30px;background: #ccc;border:1px solid black;}

这个也是针对IE7及以下版本

转载于:https://my.oschina.net/sunshinewyf/blog/482881

你可能感兴趣的文章