css

2019-01-21  本文已影响5人  谁还不是个小仙女似的

盒模型

1.标准盒模型
盒子的宽度=margin+padding+border+width
2.ie的盒模型
盒子的宽度=margin+width
所以在css3中引入了box-sizing属性,允许改变盒模型计算宽高的方式。

定位

文档流有三种定位机制,一种是标准文档流,从上到下,从左到右;第二种float,第三种position

position

1.relative
设置为相对定位的元素本身的位置是保留的,相对它自身偏移,可以为其设置left等值进行偏移
2.absolute
设置为绝对定位的元素的位置不保留,被其他元素所占据,相对他的对父级进行定位的元素偏移。
3.fixed
类似于absolute,相对浏览器试图窗口进行偏移
4.z-index
当position属性值为relative或absolute或fixed的元素上有效,他可以设置元素的层叠顺序,数值越大的层级越往上。

float

设置为float的元素会向右或者向左偏移,直到遇到相邻元素或者父元素的边框。

常见的网页布局

flex布局

a链接的状态

link:超链接的默认样式
visited:已经访问过的样式
hover:悬停状态的样式
active:鼠标按下去那一瞬间的链接样式
在使用他们的过程中,一定要按着四个状态的先后过程性写:
a:link->a:hover->a:active->a:visited
被点击访问过的超链接样式不再具有hover和active了。解决方式是改变css属性的顺序。(linked->visited->hover->active)LV哈

css的hack

针对不同的浏览器写的不同的css的code的过程,就是css的

 background-color: blue;
            background-color: red\9; /*  all ie */
            background-color: yellow\0; /* ie8 */
            +background-color: pink; /* ie7 */
            _background-color: orange; /* ie6  */
            :root #test{
                background: purple\9; /* ie9 */
            }

行内元素和块级元素的区别?

1.块级元素:独占一行,width/height/padding/margin都可以控控制。h1-h6,div,ul,li,p
2.内联元素:宽高不可设置。但是adding和margin的left和right是可以设置的.span,em,strong,i
3.inline-block元素:可以设置宽高,但是不会自动换行。input,img,textera,label

rgba()和opacity的透明效果区别

opacity作用于元素,以及元素内的所有内容的透明度,但是rgba只作用于元素的颜色和背景色。

px和em的区别

px和em都是长度单位,区别是px是固定的,em的值不是固定的,并且em会继承父级元素的字体大小。

描述一个“reset”的css文件并使用它,知道normalize.css吗?你了解他们的不同地方吗?

不同的浏览器对一些元素有不同的默认样式。如果不处理,在不同浏览器下面会有不同的风险。

scss/less

他们都是css的预处理器,最后还是将语法编译成css.
使用原因:结构清晰,便于扩展。完全兼容css代码,可以方便的应用到项目中。

display:hidden和visiblity:hidden的区别?

display:隐藏元素但是不挤占该元素原来的空间。
visiblity:隐藏元素并且挤占该元素原来的空间

css的content属性

他主要用域before/after的伪类元素上,用来插入生成内容。

常见的选择器

1.元素选择器
2.id选择器
3.class选择器
优先级 id>class>元素

实现水平竖直居中方式

方法一:

  .box {
            width: 300px;
            height: 200px;
            margin: 0 auto;
            position: relative;
            background: #ccc;
        }
        .ant{
            position: absolute;
            top:50%;
            left: 50%;
            background-color: red;
            width:100px;
            height:80px;
            margin-left:-50px;
            margin-top:-40px;
        }

方法二:

<style type="text/css">
    #box {
        width: 300px;
        height: 200px;
        margin: 0px auto;
        background-color: #ccc;
        position: relative;
    }

    #ant {
        position: absolute;
        background-color: red;
        width: 100px;
        height: 80px;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        margin: auto;
    }
</style>

<body>
    <div id="box">
        <div id="ant"></div>
    </div>
</body>

方法三:

 .box1{
            height: 200px;
            width: 300px;
            margin: 0 auto;
            display: flex;
            border: 1px solid red;
            justify-content:center;
        }
        .ant1{
            height: 100px;
            width: 100px;
            border: 1px solid black;
        }

方法四:

   .box2{
            width: 300px;
            height: 300px;
            margin: 0 auto;
            display: table-cell;
            vertical-align: middle;
        }
        .ant2{
            margin: 0 auto;
            width: 100px;
            height: 100px;
           
        }

background

background属性由如下几个属性组成:

(1).background-color

(2).background-position

(3).background-size(CSS3)

(4).background-repeat

(5).background-origin(CSS3)

(6).background-clip(CSS3)

(7).background-attachment:背景图片是否随着页面的滚动而滚动

(8).background-image
注意点:背景图片会覆盖在背景图片上面,.url与后面的小括号之间不能存在空格,否则会报错

text-decoration

给文本添加中划线、下划线或者上划线等。

vertical-align

vertical-align用于对齐[行内级元素]:table-cell/inline-block

外边距合并

1.同级的外边距合并:
外边距产生的条件:

(1).水平方位不可能产生外边距合并现象,垂直方位有可能出现。

(2).绝对定位(absolute/fixed)元素或者浮动元素不会出现外边距合并。

(3).相邻的外边距之间内容为空,这里的内容是指边框和内边距等。
2.父子外边距合并
父子外边距合并现象,外边距不会作用与父元素,而是作用于父元素之外的元素。但是这个外边距合并现象还需要附加一个条件,就是不能触发父元素的BFC格式化上下文。

浮动元素

浮动的元素的display自动转化为inline-block
元素脱离文档流,不占据元素的空间,但是依然会占据文档流中文本的空间。

浮动带来的问题

1.父元素塌陷;
2.对于兄弟元素而言的话,要分是不是块级元素,如果是,那么此元素会尽可能的与浮动元素处于同一行,例如浮动元素覆盖此块级元素。如果是非块级元素,那么此元素会尽可能的会围绕这个浮动元素。

清除浮动

1.清除浮动元素对兄弟元素的影响
对非浮动元素加上clear:both
缺点:不能消除当前元素内部的浮动元素所产生的影响。
2.解决父元素塌陷
这种方法并不推荐,因为会增加额外的元素

<div id="box">
  <div id="inner"></div>  
  <div style="clear:both;"></div> 
</div>

3.利用伪类(对父元素添加类)

.clearfix{*zoom:1;}  
.clearfix:after{ 
  content:"."; 
  display:block; 
  height:0; 
  visibility:hidden; 
  clear:both; 
}

伪类选择器

1.nth-child:可以匹配指定类型与位置的元素
这个例子可以让li标签改变颜色。但是第三个元素不是li,所以无法匹配

<style>
    li:nth-child(2){
        color: red;
    }
     li:nth-child(3){
        color: red;
    }
</style>
<body>
    <ul>
        <li>122</li>
        <li>333</li>
        <p>4444</p>
        <li>5555</li>
    </ul>
</body>
上一篇下一篇

猜你喜欢

热点阅读