H5W3
当前位置:H5W3 > CSS3 > 正文

css

css概述

为了让网页元素的样式更加丰富,也为了让网页的内容和样式能拆分开,CSS由此思想而诞生,CSS是 Cascading Style Sheets 的首字母缩写,意思是层叠样式表。有了CSS,html中大部分表现样式的标签就废弃不用了,html只负责文档的结构和内容,表现形式完全交给CSS,html文档变得更加简洁。


css基本语法

css的定义方法是:

选择器 { 属性:值; 属性:值; 属性:值;}

选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性,每个属性有一个或多个值。属性和值之间用冒号,一个属性和值与下一个属性和值之间用分号,最后一个分号可以省略,代码示例:

<!-- 如果想要写css内容,需要写到style标签中 -->
<style>
/*
css注释和html快捷键一样: ctrl+/
*/
/* 1.获取标签 */
div {
/* 2.设置样式(宽、高、背景色、文字居中、文字颜色、行高、字体大小...) */
/* css设置格式:  属性: 值; */
width: 100px;
height: 100px;
background: red;
}
/* 把上面的层叠掉了 */
div {
/* 2.设置样式(宽、高、背景色、文字居中、文字颜色、行高、字体大小...) */
/* css设置格式:  属性: 值; */
width: 200px;
height: 200px;
background: blue;
}
</style>

css引入方式

css引入页面的方式有三种:

  1. 内联式:通过标签的style属性,在标签上直接写样式。
    <div>......</div>

  2. 嵌入式:通过style标签,在网页上创建嵌入的样式表。

    <style type="text/css">
    div{ width:100px; height:100px; background:red }
    ......
    </style>
    
  3. 外链式:通过link标签,链接外部样式文件到页面中。

    <link rel="stylesheet" type="text/css" href="https://www.pianshen.com/article/515425025/css/main.css">
    

css选择器

1. 标签选择器

标签选择器,此种选择器影响范围大,一般用来做一些通用设置,或用在层级选择器中。

2.类选择器

通过类名来选择元素,一个类可应用于多个元素,一个元素上也可以使用多个类,应用灵活,可复用,是css中应用最多的一种选择器。

3.层级选择器

主要应用在标签嵌套的结构中,层级选择器,是结合上面的两种选择器来写的选择器,它可与标签选择器结合使用,减少命名,同时也可以通过层级,限制样式的作用范围。

<style>
/* 1.标签名 */
h1 {
background: red;
}
/* 2.类名; (页面中的class属性,对应css中的一个.) */
.box {
background: blue;
}
/* 3.层级选择器(子代选择器/后代选择器) */
/* div的子元素 */
div>p {
background: green;
}
/* div的子子孙孙 */
div span {
background: red;
}
</style>
......
<h1>我是h1</h1>
<h1>我是h1</h1>
<h1>我是h1</h1>
<p>我是p1</p>
<p class="box">我是p2</p>
<p class="box">我是p3</p>
<div>
<p>我是div中的p</p>
<p>我是div中的p</p>
<p>
<span>我是span</span>
<span>我是span</span>
<span>我是span</span>
</p>
</div>
4.id选择器

通过id名来选择元素,元素的id名称不能重复,所以一个样式设置项只能对应于页面上一个元素,不能复用

5.组选择器

多个选择器,如果有同样的样式设置,可以使用组选择器

6.伪类选择器

常用的伪类选择器有hover,表示鼠标悬浮在元素上时的状态。

<style>
div {
background: red;
}
/* id获取要用# */
#box {
/* 颜色: 单词; */
/* 颜色: #ffffff;   0-9abcdef  */
/* 颜色: 单词; rgb(255, 255, 255) */
background: green;
}
/* 组选择器用逗号分隔 */
#box, h1{
background: skyblue;
}
/* 伪类选择器:就是给某个功能或者选择形式添加一个类名; */
h1:hover {
background: red;
}
</style>
......
<div>box1</div>
<!-- 整个页面中所有盒子,id值不能有任何两个相同。 -->
<!-- css用id居少,JavaScript中经常使用 -->
<div id="box">box2</div>
<div>box3</div>
<h1>我是标题</h1>
总结:

1.标签选择器: 直接书写标签名。
2.类选择器: 值前面添加一个点。
3.id选择器: css用的很少,未来给js用。(值前面添加一个#)
4.层级选择器: 后代选择器用的最多。 (空格)
5.分组选择器: 用逗号隔开。
6.伪类选择器: hover鼠标进入以后,触动某些样式。
拓展:通配符选择器。 * 可以获取所有标签。


css常用属性样式

布局常用样式属性
  • width 设置元素(标签)的宽度,如:width:100px;
  • height 设置元素(标签)的高度,如:height:200px;
  • background 设置元素背景色或者背景图片,如:background:gold; 设置元素背景色为金色
  • border 设置元素四周的边框,如:border:1px solid black; 设置元素四周边框是1像素宽的黑色实线

以上也可以拆分成四个边的写法,分别设置四个边的:

  • border-top 设置顶边边框,如:border-top:10px solid red;
  • border-left 设置左边边框,如:border-left:10px solid blue;
  • border-right 设置右边边框,如:border-right:10px solid green;
  • border-bottom 设置底边边框,如:border-bottom:10px solid pink;
  • padding 设置元素包含的内容和元素边框的距离,也叫内边距,如padding:20px;padding是同时设置4个边的,也可以像border一样拆分成分别设置四个边:padding-top、padding-left、padding-right、padding-bottom。
  • margin 设置元素和外界的距离,也叫外边距,如margin:20px;margin是同时设置4个边的,也可以像border一样拆分成分别设置四个边:margin-top、margin-left、margin-right、margin-bottom。
  • float 设置元素浮动,浮动可以让块元素排列在一行,浮动分为左浮动:float:left; 右浮动:float:right;
文本常用样式属性一:
  • color 设置文字的颜色,如: color:red;
  • font-size 设置文字的大小,如:font-size:12px;
  • font-family 设置文字的字体,如:font-family:‘微软雅黑’;为了避免中文字不兼容,一般写成:font-family:‘Microsoft Yahei’;
  • font-weight 设置文字是否加粗,如:font-weight:bold; 设置加粗 font-weight:normal 设置不加粗
  • line-height 设置文字的行高,如:line-height:24px; 表示文字高度加上文字上下的间距是24px,也就是每一行占有的高度是24px
  • text-decoration 设置文字的下划线,如:text-decoration:none; 将文字下划线去掉
  • text-align 设置文字水平对齐方式,如text-align:center 设置文字水平居中
  • text-indent 设置文字首行缩进,如:text-indent:24px; 设置文字首行缩进24px
<style>
div {
/* 常见的三个属性: 长/高/背景色 */
width: 800px;
height: 500px;
/* background-color: skyblue; */
background: skyblue;
/* 文本样式 */
color: red;
/*  加粗 大小/行高 字体格式 */
/*  一行写 */
/* font: 700 22px/50px 'Microsoft Yahei'; */
/* 加粗: 100-700 bold==700 */
font-weight: 700;
font-size: 22px;
line-height: 50px;
font-family: 'simsun';
/* 文字剧中 */
/* text-align: center; */
/* 文字缩进 */
/* text-indent: 20px; */
text-indent: 2em;
/* text-indent: -9999em;   一般做logo用他 */
}
</style>

css盒子模型

盒子模型解释

元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式。盒子模型示意图如下:
css
把元素叫做盒子,设置对应的样式分别为:盒子的宽度(width)、盒子的高度(height)、盒子的边框(border)、盒子内的内容和边框之间的间距(padding)、盒子与盒子之间的间距(margin)。

设置宽高
width:200px;  /* 设置盒子的宽度,此宽度是指盒子内容的宽度,不是盒子整体宽度(难点) */
height:200px; /* 设置盒子的高度,此高度是指盒子内容的高度,不是盒子整体高度(难点) */
设置边框

设置一边的边框,比如顶部边框,可以按如下设置:

border-top:10px solid red;

其中10px表示线框的粗细;solid表示线性。

设置其它三个边的方法和上面一样,把上面的’top’换成’left’就是设置左边,换成’right’就是设置右边,换成’bottom’就是设置底边。

四个边如果设置一样,可以将四个边的设置合并成一句:

border:10px solid red;
设置内间距padding

设置盒子四边的内间距,可设置如下:

padding-top:20px;     /* 设置顶部内间距20px */
padding-left:30px;     /* 设置左边内间距30px */
padding-right:40px;    /* 设置右边内间距40px */
padding-bottom:50px;   /* 设置底部内间距50px */

上面的设置可以简写如下:

padding:20px 40px 50px 30px; /* 四个值按照顺时针方向,分别设置的是 上 右 下 左
四个方向的内边距值。 */

padding后面还可以跟3个值,2个值和1个值,它们分别设置的项目如下:

padding:20px 40px 50px; /* 设置顶部内边距为20px,左右内边距为40px,底部内边距为50px */
padding:20px 40px; /* 设置上下内边距为20px,左右内边距为40px*/
padding:20px; /* 设置四边内边距为20px */
设置外间距margin

外边距的设置方法和padding的设置方法相同,将上面设置项中的’padding’换成’margin’就是外边距设置方法。

盒子的真实尺寸

盒子的width和height值固定时,如果盒子增加border和padding,盒子整体的尺寸会变大,所以盒子的真实尺寸为:

  • 盒子宽度 = width + padding左右 + border左右
  • 盒子高度 = height + padding上下 + border上下

css3给我们提供了一个属性,有了他,那么盒子的宽高就是在加上padding和border之后的值

box-sizing: border-box;
块元素居中技巧

块元素如果想设置相对页面水平居中,可以使用margin值中的auto关键字,“auto”只能用于左右的margin设置,不能用于上下的:

.box{
width:300px;
height:300px;
background:gold;
margin-left:0px;
margin-top:0px;
margin-left:auto;
margin-right:auto;
}

简写如下:

.box{
width:300px;
height:300px;
background:gold;
margin:0px auto;
}
文字居中

横向剧中: text-align: center; 纵向剧中: 行高==盒子高度。

css初始化

简单版: * {padding: 0; margin: 0} 复杂版: 引入文件(参考资料)。


css显示特性

display属性是用来设置元素的类型及隐藏的,常用的属性有:

  1. none 元素隐藏且不占位置
  2. inline 元素以行内元素显示
  3. block 元素以块元素显示
<style>
div {
width: 500px;
height: 300px;
background: skyblue;
/* 隐藏盒子: display: none;  不占位置; */
/* display: none; */
/* 占位置的隐藏 */
/* visibility: hidden; */
/* 显示盒子: display: block;   占位置;*/
/* display: block; */
/* display: inline;   一行显示,不能设置宽高 */        }
</style>

元素溢出

当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式,设置的方法是通过overflow属性来设置。

overflow的设置项:
  1. visible 默认值。内容不会被修剪,会呈现在元素框之外。
  2. hidden 内容会被修剪,并且其余内容是不可见的。
  3. scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
  4. auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
<style>
.box {
width: 200px;
height: 200px;
/* overflow: hidden;  超出部分隐藏 */
/* overflow: scroll;  滚动条 */
overflow: auto;
background: skyblue;
}
</style>

css浮动

想让两个块级独占一行的元素在一行显示,可以使用浮动(float)或者定位(position)

  1. float: none 默认值。代表盒子本身没有浮动。
  2. float: left 让填写代码的盒子以左侧为基准,对齐了浮动。
  3. float: right 让填写代码的盒子以右侧为基准,对齐了浮动。

总结: 浮动的盒子不占位置,所以下面的盒子会顶上来,被浮动的盒子盖住。
解决办法: 把浮动的盒子单独用div抱起来,父盒子设置高度或者设置overflow: hidden;

.box div {
/* float: left; */
float: right;
}

注意: 一个盒子里面的子盒子,要么都浮动,要么都不浮动


css定位

文档流

文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置。

关于定位

我们可以使用css的position属性来设置元素的定位类型,postion的设置项如下:

  • relative 生成相对定位元素,一般是将父级设置相对定位,子级设置绝对定位,子级就以父级作为参照来定位,否则子级相对于body来定位。
  • absolute 生成绝对定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于上一个设置了定位的父级元素来进行定位,如果找不到,则相对于body元素进行定位。
  • fixed 生成固定定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于浏览器窗口进行定位。
定位元素的偏移

定位的元素还需要用left、right、top或者bottom来设置相对于参照元素的偏移值。

定位元素层级

定位元素是浮动的正常的文档流之上的,可以用z-index属性来设置元素的层级

<style>
.box {
width: 800px;
height: 500px;
/* 版心 */
margin: auto;
background: #ccc;
position: relative;
}
.box1 {
width: 200px;
height: 300px;
/* 让子盒子,在父盒子中居中 */
/* 子绝父相 */
position: absolute;
/* 1.计算后设置 */
/* left: 300px; */
/* 2.常用方法 */
left: 50%;
margin-left: -100px;
/* 透明度 */
/* opacity: 0.1; */
/* 背景半透明 */
background: rgba(255, 0, 0, 0.2);
/* IE678识别的透明度 */
/* filter: alpha(opacity=10); */
}
.box2 {
width: 200px;
height: 300px;
background: skyblue;
position: absolute;
left: 400px;
/* 设置层级: 有定位的盒子,默认层级为0; */
z-index: 1;
}
.box3 {
width: 200px;
height: 300px;
background: yellowgreen;
/* 没有定位的盒子,就没有层级 */
position: absolute;
/* margin-left: 500px; */
left: 500px;
z-index: 99;
}
</style>
......
<div class="box">
<!-- 如果都有定位的话,那么相同的层级,后面的盒子高。 -->
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</div>

权重

CSS权重指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式。

权重等级

可以把样式的应用方式分为几个等级,按照等级来计算权重

  1. 内联样式,如:style=””,权重值为1000
  2. ID选择器,如:#content,权重值为100
  3. 类,伪类,如:.content、:hover 权重值为10
  4. 标签选择器,如:div、p 权重值为1
<style type="text/css">
body #content .main_content h2{
color:red;
}
#content .main_content h2{
color:blue;
}
</style>
......
<div id="content">
<div class="main_content">
<h2>这是一个h2标题</h2>
</div>
</div>
<!--
第一条样式的权重计算: 1+100+10+1,结果为112;
第二条样式的权重计算: 100+10+1,结果为111;
h2标题的最终颜色为red
-->

以上内容仅供参考 -_- …为作者边学习,边摘抄和总计的内容

未经允许不得转载:H5W3 » css

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址