跳至主要內容

CSS 基础

技术中心大约 6 分钟

CSS 基础

CSS:层叠样式表,用于优化、美化网页。

css 引入方式

1.外联(推荐) 实现样式 内容分离
<link rel="stylesheet" href="style.css">

2.内嵌
<style></style>

3.内联,在标签上直接使用style属性
<h2 style="width:200px;height:100px;border:1px solid black;" >我是h2</h2>

4.@import,必须在style中第一行
<style>
@import "style.css";
<style>

CSS 权重

即 css 众多类型选择符的优先级,优先级高的样式会覆盖优先级低的样式。

CSS 优先级规则:

1.css 选择规则的权值不同时,权值高的优先;

2.css 选择规则的权值相同时,后定义的规则优先;

3.css 属性后面加 !important 时,无条件绝对优先;

权重的等级

1.!important,加在样式属性值后,权重值最高
2.内联样式,如:style="",权重值为 1000

3.IDopen in new window 选择器,如:#content,权重值为 100
4.类,伪类和属性选择器,如:content、:hover 权重值为 10
5.标签选择器和伪元素选择器,如:div,p,:before 权重值为 1
6.通配符、子选择器、相邻选择器等,如:*、>、+,权值为 0
7.继承的样式没有权值

权重计算案例

a{color: yellow;} 权重值:0,0,0,1
div a{color: green;} 权重值:0,0,0,2
.demo a{color: black;} 权重值:0,0,1,1
.demo input[type="text"]{color: blue;} 权重值:0,0,2,1
.demo *[type="text"]{color: grey;} 权重值:0,0,2,0
#demo a{color: orange;} 权重值:0,1,0,1
div#demo a{color: red;} 权重值:0,1,0,2

CSS 单位

em:相对于元素的字体大小(font-size)(2em 表示当前字体大小的 2 倍)

px:像素,代表屏幕中每个「点」

vw:视窗宽度,1vw=视窗宽度的 1%

vh:视窗高度,1vh=视窗高度的 1%

rem:相对于根元素的字体大小(font-size)

提示:

CSS 中的根元素是指 :root 选择器匹配到的元素,也就是文档树中最顶层结构的元素。

em 和 rem 单元可用于创建完美的可扩展布局。

视口(Viewport)= 浏览器窗口的尺寸。如果视口宽 50 里面,则 1vw = 0.5cm。

CSS 单位兼容

compatibility
compatibility

CSS 布局

栅格布局

响应式 Web 设计:页面的设计与开发应当根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相应的响应和调整。
栅格系统用于通过一系列的行(row)与列(column)的组合创建页面布局。

栅格化布局元素

container: 包裹整个栅格系统的容器

rows: 行

columns: 列

gutters: 各列的间的空隙

gridLayout
gridLayout
Container 容器

一个用于摆放栅格系统的容器。通常我们希望这个容器占满整个页面,除非显示设备特别大,这个时候定一个最大宽度。

.grid-container {
    width: 100%;
    max-width: 1200px;
}
Row 行

用于防止里面的列( column )溢出到其他的行。通常会需要清除浮动,因为我们是通过浮动来制作栅格系统的。


.row:before, .row:after {
    content: "";
    display: block;
    height: 0;
    width: 0;
    visibility: hidden;
    clear: both;
}
Column 列

栅格系统的核心,规定了列的宽度,位置和间隔。而在此之前,我们需要规定所有的盒子模型为 border-box 类型,这样做的原因是避免繁琐的计算和更简单的分列。

.grid-container {
    box-sizing: border-box;
}
[class*='col-'] {
        float: left;
        min-height: 1px;
        width: 16.66%;
    }
  .col-1{
        width: 16.66%;
    }
    .col-2{
        width: 33.33%;
    }
    .col-3{
        width: 50%;
    }
    .col-4{
        width: 66.664%;
    }
    .col-5{
        width: 83.33%;
    }
    .col-6{
        width: 100%;
    }
Gutter:插槽(列之间的距离)

由于列的宽度单位是响应式的%,我们给列元素的间距是固定单位的 padding(px),为了避免复杂的计算,我们规定所有的盒子模型为 border-box 类型。

 .grid-container *{
        box-sizing: border-box;
    }

    [class*='col-'] {
        float: left;
        min-height: 1px;
        width: 16.66%;
        /*-- 设置间隙 --*/
        padding: 12px;
    }

BootStrapopen in new window

网格布局

Gridopen in new window

它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。

Flex 布局

Flexopen in new window

弹性布局,用来为盒状模型提供最大的灵活性。

水平垂直居中

    第一种方式:
    <div class="demo1">
      <div class="child1"></div>
    </div>
    第二种方式:
    <div class="demo1">
      <div class="child2"></div>
    </div>
    第三种方式:
    <div class="demo1">
      <div class="child3"></div>
    </div>
    第四种方式:
    <div class="demo2">
      <div class="child4"></div>
    </div>
      .demo1 {
        position: relative;
        width: 150px;
        height: 150px;
        background: rgb(155, 155, 243);
      }
       第一种方式:
      .child1 {
        background: white;
        position: absolute;
        left: 50%;
        top: 50%;
        width: 100px;
        height: 100px;
        transform: translate(-50%, -50%);
      }
      第二种方式:
      .child2 {
        width: 100px;
        height: 100px;
        background: white;
        position: absolute;
        left: 50%;
        top: 50%;
        margin-left: -50px;
        margin-top: -50px;
      }
      第三种方式:
      .child3 {
        width: 100px;
        height: 100px;
        background: white;
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        right: 0;
        margin: auto;
      }

      第四种方式:
      .demo2 {
        height: 150px;
        width: 150px;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: rgb(155, 155, 243);;
      }
      .child4 {
        width: 100px;
        height: 100px;
        background-color: white;
      }

float 浮动

浮动的影响

1.在允许的空间并排呈现,如果空间不够自动换行
2.改变块级元素占据一整行特点,去掉多余的空间,把宽度和高度缩成本身内容的宽高或者设置的宽高
3.浮动会脱离正常的文档流,后续的正常元素会占据浮动元素的位置
4.浮动会造成父元素塌陷
5.内嵌元素浮动后将可以设置宽高

解决浮动造成的影响

1.清除浮动:clear:both
2.为父元素设置宽高(建议使用)
3.让父元素与子元素一起浮动
4.为父元素设置 overflow:hidden
5.为塌陷的父元素添加一个 after 属性,设置方法:

.sec1:after{
    clear:both;
    content:"";
    display:block;
    height:0;
    width:0;
    visibility:hidden
}

position 定位

绝对定位 absolute

1.脱离文档流,原本占据的空间释放
2.原点以页面 0,0 的位置为参考,如果父元素有定位,就会以最近一个有定位的父元素作为原点参考
3.内嵌元素可以设置宽高

相对定位 relative

1.不脱离文档流,原本元素占据的空间不会释放
2.根据自身在文档流中的位置作为原点参考

固定定位 fixed

1.脱离文档流
2.原点是根据浏览器左上角 0 ,0 的位置作为原点参考,和父元素没有任何关系。哪怕父元素定位,也对固定定位的子元素没有影响

调整层级:zindex ,取值范围-1 到 9999

注意:

定位做网页遵循父相子绝:
1.能保证文档流不受影响
2.给子元素提供绝对定位的原点参考

固定>绝对>相对

CSS 扩展知识open in new window