前端入门之旅——css3知识点整理

298 阅读7分钟

一,选择器

1,元素选择符
*通配符(选择HTML中的所有元素)
E类型选择符(选择标签为E的元素)
E#id id选择符(id值是唯一的)
E.class 类选择符(选择class值相等的一类元素)
2,关系选择符

  • E F后代选择器(选择祖先元素为E的所有F元素)
  • E>F 子代选择器(选择父元素为E的F元素)
  • E+F 相邻选择符(选择紧邻E的下一个兄弟元素F)
  • E~F 兄弟选择符(选择E之后的所有兄弟元素F)

3,属性选择符

  • E[attribute] 选择带有某属性值的元素
    例:p[class]选择带有类的元素
  • E[attribute=value] 选择属性值为某值的元素
    例:p[class=list]选择带有类名为list的元素
  • E[attribute~=value] 选择属性内包含某个单词的元素
     例:p[class~=list]选择带有类名中含有list的元素 
  • E[attribute|=value] 选择属性值以value开头的元素
      例:p[class~=aa]选择带有类名中以aa开头的元素 

4,伪类伪元素选择器

  • a:link 选择所有未被访问的链接
  • a:visited 选择所有已被访问的链接
  • a:active 选择活动链接
  • a:hover 选择鼠标指针位于其上的链接
  • a::focus 选择获得焦点的 input 元素
  • a:first-letter 选择每个元素的首字母
  • a:first-line 选择每个元素的首行
  • a:first-child 选择属于父元素的第一个子元素的每个元素
  • a:before 在每个元素的内容之前插入内容
  • a:after 在每个元素的内容之后插入内容
p:first-of-type	选择属于其父元素的首个 <p> 元素的每个 <p> 元素
p:last-of-type	选择属于其父元素的最后 <p> 元素的每个 <p> 元素
p:only-of-type	选择属于其父元素唯一的 <p> 元素的每个 <p> 元素
p:only-child	选择属于其父元素的唯一子元素的每个 <p> 元素
p:nth-child(2)	选择属于其父元素的第二个子元素的每个 <p> 元素

二,弹性盒模型

flex

1.flex  
    Flex是Flexible Box的缩写,意为弹性布局,用来为盒子模型提供最大的灵活性、任
    何一个容器都可以指定为Flex布局。
    设为Flex布局后子元素的floatclearvertical-align属性将失效。  
2. flex-grow  
    占父元素剩余空间比例  
3. flex-direction
	容器内元素的排列方向(默认横向排列)
	flex-direction:row; 沿水平主轴让元素从左向右排列
	flex-direction:column; 让元素沿垂直主轴从上到下垂直排列
	flex-direction:row-reverse;沿水平主轴让元素从右向左排列  
4. flex-wrap  
 	容器内元素的换行(默认不换行)  
	flex-wrap: nowrap; (默认)元素不换行  
	flex-wrap: wrap; 元素换行
5. justify-content  
	元素在主轴(页面)上的排列  

* justify-content : center;元素在主轴(页面)上居中排列  

* justify-content : flex-start;元素在主轴(页面)上由左或者上开始排列  

* justify-content : flex-end;元素在主轴(页面)上由右或者下开始排列  

* justify-content :space-between;元素在主轴(页面)上左右两端或者上下两端开始排列  justify-content :space-around;两元素间距相等 距父容器距离相等  
6.align-items  
元素在主轴(页面)当前行的横轴(纵轴)方向上的对齐方式  
1,align-items : flex-start;  
弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界(靠上对齐)。  
2,align-items : flex-end;  
弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。(靠下对齐)  
3,align-items : center;  
弹性盒子元素在该行的侧轴(纵轴)上居中放置。(居中对齐)  
4,align-items : baseline;  
如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。(靠上对齐)  

grid

1grid  
	grid通常用于二维布局,同时操作子元素的行和列  
	flex通常用于一维布局  
2grid-template-columns  
	用于确定子元素的列的数目和宽度
3grid-template-rows
	用于确定子元素的行的数目和高度
4grid-column-grap
	用于设置列间距
5grid-row-grap
	用于设置行间距
6grid支持的单位 %,px,fr(表示占有剩余的几份1fr,2fr...) auto;
7grid-columngrid-row  
	分别用于设置列跨度和行跨度
    比如:子元素1:grid-column:2 / 5 表示第一个元素跨越第二到第五列  
8,justify-self和align-self 在子元素中,设置元素的列属性和行属性  
      stretch: 默认值,拉伸内容的宽度为预设的宽度
      start: 宽度为内容宽度,内容在左侧展示
      center: 宽度为内容宽度,内容在居中展示
      end: 宽度为内容宽度,内容在右侧展示 
9,justify-items和align-items在父元素中,用于设置子元素在水平和竖直方向上的排列
	 center,left,right  
10,grid-template-areas为每一个栅格化命名  
11repeat(params1,params2)简化和minmax(params3,params4);
	repeat直接设置重复的行数/列数和对应的高度和宽度  
    用法:repeat(2,100px);
    minmax可以同时设置元素维度的最大值和最小值
    用法:minmax(100px,200px);
	

三,元素布局

  • 左右固定中间自适应
    浮动时的自适应实现: 1,flex 2,position 3,浮动+margin 4,calc(100%-50px)
方法一:flex
   body{
       display: flex;
   }
   #left{
       width: 200px;
       height: 300px;
       background: #ff0036;
   }
   #right{
       width: 200px;
       height: 300px;
       background: #000000;
   }
   #center{
       flex-grow: 1;
       background: green;
   }
方法二:position
   #container{
       width:100%;
       height:300px;
       position:relative;
   }
   .left{
       width: 200px;
       height: 300px;
       background:  #ff0036;
       position: absolute;
       top: 0;
       left: 0;
     
   }
   .center{
       width:100%;
       margin-left:200px;
       margin-right:200px;
       background:green;
   }
   .right{
       height: 300px;
       margin-left: 200px;
       background:  #000000;
       position: absolute;
       top: 0;
       right: 0;
   }  
   方法三:float  
   #container{
       float:left;
   }
   .left{
       width: 200px;
       height: 300px;
       background:  #ff0036;
     }
   .center{
       width:100%;
       margin-left:200px;
       background:green;
   }
   .right{
       height: 300px;
       margin-left: 200px;
       background:  #000000;
   }  
   
  • 上下固定中间自适应
html{
    width:100%;
    height: 100%;
}
body{
    width:100%;
    height: 100%;
    position: relative;
}

.top{
      width:100%;
       height:100px;
       background-color:blue;  
       position: absolute;
       top:0;
       left:0;
}
.center{
       width:100%;
    
       background-color: brown;
        
        position: absolute;
        left:0;
        right: 0;
        top:100px;
        bottom: 100px;
}
.bottom{
       width:100%;
       height:100px;
       background-color: red;
       position: absolute;
       bottom: 0px;
       left:0;
       right: 0;
}


四,常用属性

  • border-radius

  • transform perspective 观察视角,产生三维特效

  • translate rotate scale

  • transition

  • opacity 同时更改背景和内容的透明度

  • rgba 可以只进行更改背景或内容的透明度

  • filter 模糊

  • box-shadow //可以用来实现绝对的一像素
    有四个参数(a,b,c,d)
    a是指水平向右的偏移量;
    b是指垂直向下的偏移量;
    c是指模糊半径 一定大于零;
    d是指外延值 小于零时向内延伸;

box-shadow:
    -1px 0 0 green, //左边阴影
    0 -1px 0 blue, //顶部阴影
    0 1px 0 red, //底部阴影
    1px 0 0 yellow; //右边阴影
  • border-radius(上左,上右,下左,下右)
    50%时获得最大⚪,大于50%时将不再改变

  • 背景

1,background-img 默认从padding区域开始  
2,background-orign 设置背景图显示的原点  
3,background-attachment (1scroll(2)fixed 设置背景图根据什么进行定位  
4,background-clip 背景图从哪个位置开始裁剪  
5,使文本透过图片; 
-webkit-background-clid:text  
-webkit-text-fill-color:transparent   
6,background-size:长度/百分比  
cover背景全部被填充;content保证图片完整进入  

五,动画

animation:run (自定义的名字) 2s(维持的时间) linear(完成动画的方式) 1s(延迟的时间) infinite(完成动画的次数)

@keyframs run{
    0%{
        
    }
    50%{
        
    }
    100%{
        
    }
}

六,元素居中的方法

1,块级元素

1margin
    margin:0 auto;
2,定位
    position:absolute;
    left:50%;
    margin-left:-元素宽度的一半
3,css3 flex
    justify-content:center;
4,css transform
    transform:translateX:50%;

2,行级元素

1margin
    margin:0 auto;//对于其内部元素
2,定位
    position:absolute;
    left:50%;
    margin-left:-元素宽度的一半
3,css3 flex
    justify-content:center;
4,css transform
    transform:translateX:50%父元素的宽度;
    margin-left:-元素宽度的一半
5,text-align:center;

七,元素垂直居中的方法

1,块级元素

1,定位
    position:absolute;
    top:50%;
    margin-top:-元素高度的一半;
2,css flex
    align-item:center;
3, css3 transform
    transform:translateY:50%;
4vertical-align:middle

2,行级元素

1,定位
    position:absolute;
    top:50%;
    margin-top:-元素高度的一半;
2,css flex
    align-item:center;
3, css3 transform
    transform:translateY:50%父元素的高度;
    margin-top:-元素高度度的一半
4,vertical-align:middle
5,line-height
    line-height=行高