欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

#CSS-阶段性查缺补漏(1)

程序员文章站 2024-02-27 15:11:09
...

1.    浏览器前缀(无前缀属性总是放在最后)

    对于任何新的样式,最终规范可能与浏览器渲染它的方式稍微不同。  

-webkit-border-radius: 10px;     //苹果Safari浏览器和谷歌的Chrome浏览器
-moz-border-radius: 10px;       //Firefox浏览器
-o-border-radius: 10px;         //Opera浏览器
border-radius: 10px;

注:Autoprefixer:一个以最好的方式处理浏览器前缀的后处理程序。

2.    IE盒模型

IE8及以上和其他浏览器:width和height指的是内容(content);

IE8以下为IE 盒子模型,width和height包括content、padding、border.

3.  IE6、7下display:inline-block的兼容性

大致描述:IE6、IE7支持对html行内元素设置inline-block。实际上只是看起来支持而已,IE6、IE7并不识别inline-block这个属性值,只是触发了layout,让行内元素有了inline-block的表征,比如说:行内显示且可设置宽高等等。

实现块级元素的inline-block属性值设置:详解

div { display:inline-block; _zoom:1;_display:inline;}/*推荐IE6*/
div { display:inline-block; *zoom:1;*display:inline;}/*推荐IE6或IE7*/

下划线(_)是只有IE6才能识别,而星号(*)是只有IE6和IE7可识别,作用就是用于区分不同浏览器的。

zoom始终可以触发layout, 而_display:inline;或者*display:inline;是为了让元素重新获得display:inline;的属性。

4.    haslayout是IE7-浏览器的特有属性

有两种状态:true或false。当其为true时,代表该元素有自己的布局,否则代表该元素的布局继承于父元素。

CSS属性

  可以触发hasLayout的有如下CSS属性:

  【1】display:inline-block
  【2】height/width:除了auto
  【3】float:left/right
  【4】position:absolute
  【5】writing-mode(IE专有属性,设置文本的垂直显示):tb-rl
  【6】zoom(IE专有属性,设置或检索对象的缩放比例):除了normal

【IE7专有的触发hasLayout的CSS属性】

  【1】min-height/max-height/min-width/max-width:除none
  【2】overflow\overflow-x\overflow-y:除visible
  【3】position:fixed

  5.    em、px、rem

        em是相对于应用于当前元素的字体尺寸,而百分比则是相对于父元素的尺寸。

em:如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。我们在写CSS的时候,需要注意三点:

        1. body选择器中声明Font-size=62.5%;

        2. 将你的原来的px数值除以10,然后换上em作为单位;

        3. IE底下,“em”会有一个问题存在。调整字体大小的时候,同样会打破我们的弹性布局,需要设置:

     html {font-size: 100%}

rem:只是相对HTML根元素大小,(IE8以上,对于不支持它的浏览器,就多写一个绝对单位的声明)

如果你的用户群都使用最新版的浏览器,那推荐使用rem,如果要考虑兼容性,那就使用px,或者两者同时使用。

        如果希望随着当前元素的字体尺寸em是相对于应用于当前当前元素的字体尺寸;而百分比则是相对于父元素的尺寸。寸而改变尺寸,则使用em最佳,如:行高、字体大小。相反,如果是随着父容器或者是整体页面布局而改变尺寸,则使用%更好,如元素的高度和宽度设置。

工具:字体尺寸转换

6、继承的样式权重最小

<div class="box">
    <a href="#">层叠</a>
</div>
.box { color: red}

    继承的颜色并不会显示,因为继承的样式权重最小,浏览器对a标签设置了默认样式,将继承的样式层叠了。

7、calc() 函数 (结合媒体查询,实现响应式布局)

.box img {
    width:calc(100%/4 - 40px);
    margin:20px;
    float: left;
}
@media (max-width :600px){
    .box img {
      width:calc(100%/2 - 40px);
    }
}
屏幕不小于600px时,最多显示4张图片。屏幕小于或等于600px时,一行最多只能放两张。

 8、垂直外边距合并

#CSS-阶段性查缺补漏(1)

判断两个margin是否会折叠,要判断他们是否满足以下三个条件:

  1. 都在普通流中
  2. 在同一个块级格式化上下文中
  3. 没有被行盒、空隙、内填充、边框阻断

9、透明度设置

.alert {
    opacity:0.8;
    filter:alpha(opacity=80); //兼容IE
}

10、浮动float

因为浮动元素脱离文档流,所以包围的图片的文本的div不占据空间。

浮动的特点:1.  .item {float: left;} ,则item2 除了文本,其他内容都不可见

                    2.    行内元素设置浮动后形成一个块框,因此可以使用width、height、margin和padding 

清除浮动:

    1、父级元素设置

.parent {
       overflow: hidden;
       *zoom: 1; //兼容IE6、7
}

    2、伪类元素清除浮动

选择符  .clear::after{
            content:".";
            clear:both;
            display:block;
            height:0;
            overflow:hidden;
            visibility:hidden;
              }
.clear{zoom:1;} //兼容IE6、7

11、BFC(block formating context):块级格式化上下文

  • 特点:  1.  在一个块级格式化上下文中,块框会朝着垂直方向一个接一个的排列    2.在一个块级格式化上下文中,包含里面的所有元素,但不包含创建了新块格式化上下文的元素。(结合上一点理解)
  • 创建BFC的情况: a. 浮动float不为none; b. position值为absolute、fixed的元素  c. display不为block 的元素 d.overflow不为visible的元素。

12、overflow :hidden;  能清除浮动的原因

        不仅对超出的内容进行了处理,而且创建了BFC,使父元素重新自适应了子元素,顺便清除了浮动。

13、高度设置百分比的情况 height:100%;

  •     父元素在不设置高度的情况下,是自适应子元素的高度的
  •     在高度为0或不设置高度的情况下,高度是文字的行高,但是设置了高度则用的是设置的高度而不再是行高
{
    height:100px;
    line-height:30px;
    }    高度为100px

14、行内元素(或display:inline;)

有两个特点:1.  上下外边距、width、height不会起作用

                    2.  padding会起作用,但是padding-top、padding-bottom不会占据位置,而且会把其他元素盖住。

15. inline和inline-block会引起间距的空格

解决方法:1.  可以给父元素添加font-size:0;  但是文本的内容会消失;

                 2.  父元素letter-spacing: -5px; 设置合理的值,

                3.   直接设置浮动  

16、auto

无意义的auto:      

  •   对于行内元素,左右外边距设置为auto,其结果为0  (因为行内和行内块的空间只有自身的那些位置,那些位置都让高度和宽度占据,而宽度和高度是根据内容决定的)








相关标签: 知识点