CSS入门学习笔记+案例

目录

1. 概述

2. 基本语法规范

3. 引入的方式

3.1 内部样式

3.2 行内样式

3.3 外部样式

4. 选择器

4.1 基础选择器

4.1.1 标签选择器

4.1.2 类选择器

4.1.3 id选择器

4.1.4 通配符选择器

4.2 复合选择器 

4.2.1 后代选择器

4.2.2 子选择器

4.2.3 并集选择器

4.2.4 伪类选择器

5. 常用元素属性

5.1 字体属性

5.1.1 设置字体

5.1.2 设置字体大小

5.1.3 设置字体粗细

5.1.4 设置文字样式 

5.2 文本属性

5.2.1 文本颜色

5.2.2 文本对齐

5.2.3 文本装饰(上划线,下划线,删除线)

5.2.4 文本的缩进与行高 

5.3 背景属性

5.3.1 背景颜色

5.3.2 背景图片

5.3.3 背景平铺 

5.3.4 背景位置

5.3.5 背景尺寸

5.4 圆角矩形

6. 元素的显示模式

6.1 块级元素

6.2 行内元素/内联元素

6.3 改变显示模式 

7. 盒模型(重点)

7.1 边框

7.2 内边距

7.3 外边距

7.4 块级元素水平居中

7.5 去除浏览器默认样式

7.6 弹性布局


1. 概述

层叠样式表(Cascading Style Sheets)

css能对网页中元素位置的排版进行像素精确控制,实现美化页面的效果,能够做到页面样式和结构分离。就是对前面的html骨架进行美化。

2. 基本语法规范

选择器 + {一条/n条声明}

· 选择器决定针对谁修改

· 声明决定修改的内容

· 声明的属性是键值对,使用 “ ;”区分键值对, 键值对的格式:键:值

· 冒号后面加空格,选择器和 { 之间也加空格

例如:

    <style>
        p {
            /* 字体颜色 */
            color: red;
            /* 字体大小 */
            font-size: 30px; 
        }
    </style>

说明:

· CSS要写到style标签中

· style标签可以放到页面的任意位置,但是一般放到head标签内

· CSS使用/* */作为注释

3. 引入的方式

3.1 内部样式

写在style标签中,嵌入html内部,如上述例子所示

优点:这样能让样式和页面结构分离

缺点:当css内容很多的时候,分离的不够彻底

3.2 行内样式

通过style属性,来指定某个标签的样式,只针对某个标签生效

缺点:只适合简单的样式,不能写太复杂的样式

这种写法优先级高,会覆盖其他的样式

例如:

    <style>
        p {
           color: red;
        }
    </style>
    <P style="color: green;">一去二三里</P>

结果:字体颜色显示绿色,而不显示红色 

3.3 外部样式

外部样式是实际开发中最常用的方式

1. 创建一个css文件

2. 使用link标签引入css

 <link rel="stylesheet" href="blog.css">

例如:

创建html文件,并引入css文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="blog.css">
</head>
<body>
    <div>好好学习,天天向上</div>
</body>
</html>

创建css文件 

div {
    /* 字体颜色 */
    color: blue;
    /* 字体大小 */
    font-size: 30px;
}

结果:

优点:样式和页面结构彻底分离

缺点:受浏览器缓存影响,修改之后不一定立刻生效,可以使用 ctrl+F5 强制刷新页面

4. 选择器

选择器的功能:选中页面中指定的标签元素,要先选中元素,才能设置元素的属性

选择器的种类:

1. 基础选择器:单个选择器构成

· 标签选择器

· 类选择器

· id选择器

· 通配符选择器

2. 复合选择器:把多种基础选择器综合运用起来

· 后代选择器

· 子选择器

· 并集选择器

· 伪类选择器

4.1 基础选择器

4.1.1 标签选择器

特点:能快速为同一类型的标签都选择出来,但是不能差异化选择 

    <style>
        p {
            color: red;
        }
        div {
            color: blue;
        }
    </style>
    <p>哈哈</p>
    <p>嘻嘻</p>
    <p>嘿嘿</p>
    <div>王昭君</div>
    <div>妲己</div>

4.1.2 类选择器

特点:差异化表示不同的标签,可以让不同的标签使用同一种样式

    <style>
        .c1 {
            color: brown;
        }
    </style>
    <div class="c1">苹果</div>
    <span class="c1">香蕉</span>

注意:

· 类名用.开头

· 下方的标签使用class属性来调用

· 一个类可以被多个标签使用, 一个标签也能使用多个类(多个类名要使用空格分割)

· 不要使用纯数字,或者中文,以及标签名来命名类名

示例:使用多个类名

    <style>
        .c1 {
            color: brown;
        }
        .f1 {
            font-size: 30px;
        }
    </style>
    <div class="c1 f1">苹果</div>
    <span class="c1 f1">香蕉</span>

4.1.3 id选择器

· 使用#开头表示id选择器

· id是唯一的,不能被多个标签使用

    <style>
        #i1 {
            color: red;
            font-size: 50px;
        }
    </style>
    <div id="i1">我爱学Java</div>

4.1.4 通配符选择器

使用 * 的定义,选取所有标签

        * {
            color: pink;
        }

页面中所有的内容都会被修改为粉色 

4.2 复合选择器 

4.2.1 后代选择器

选择某个父元素中的某个子元素

元素1  元素2  { 样式声明 } 

说明:

· 元素1和元素2要使用空格分割

· 元素1是父级,元素2是子级,只选元素2,不影响元素1

示例1:修改ul中的li颜色,不影响ul

    <style>
        ul li {
            color: green;
        }
    </style>
    <ul>
        <li>Java</li>
        <li>c++</li>
        <li>python</li>
    </ul>

示例2:元素2不一定是儿子,也可以是孙子 

    <style>
        ul li a {
            color: green;
        }
        /* 这两种都行 */
        ul a {
            color: green;
        }
    </style>
    <ul>
        <li>Java</li>
        <li>c++</li>
        <li><a href="#">空连接</a></li>
    </ul>

4.2.2 子选择器

和后代选择器类似,但是只能选择子标签,也就是亲儿子,不能是孙子

元素1>元素2 { 样式声明 }

· 使用大于号分割

· 只能是亲儿子,不能是孙子

    <style>
        div>a {
            color: red;
        }
    </style>
    <div>
        <a href="#">链接1</a>
        <p><a href="#">链接2</a></p>
    </div>

注意:只有链接1变色,链接2不变色,因为1是亲儿子,2是孙子

4.2.3 并集选择器

用于选择多组标签(集体声明)

元素1,元素2  {样式声明} 

· 使用逗号分割多个元素,表示同时选中

· 最后一个选择器不能加逗号

示例:将香蕉和苹果同时染成红色

    <style>
        div,span {
            color: red;
        }
    </style>
    <div>苹果</div>
    <span>香蕉</span>

4.2.4 伪类选择器

1. 链接伪类选择器

a:link ,未被访问过的链接

a:visited ,已经访问过的链接

a:hover ,鼠标悬停的链接

a:active ,鼠标按下未弹起的链接

示例: 给链接添加样式

<a href="#">陕西科技大学</a>
        a:link {
            color: blue;
        }
        a:visited {
            color: grey;
        }
        a:hover {
            color: brown;
        }
        a:active {
            color: green;
        }

说明:未访问蓝色,访问过灰色,悬停棕色,按下不弹起绿色 

2. force伪类选择器

选取获取焦点的input表单元素

示例:

    <style>
        #i1:focus {
            color: red;
        }
        #i2:focus{
            color: green;
        }
        #i3:focus {
            color: blue;
        }
    </style>
    <input id="i1" type="text">
    <input id="i2" type="text">
    <input id="i3" type="text">

结果:鼠标悬停在哪个输入框,哪个输入框的文本就会变成设置的颜色

5. 常用元素属性

5.1 字体属性

5.1.1 设置字体

        div {
            font-family: '微软雅黑';
        }
        span {
            font-family: '宋体';
        }

说明:

· 字体名称可以用中文,但是不建议

· 多个字体之间使用逗号分隔(从左到右查找字体,如果都找不到,会使用默认字体)

· 如果字体名有空格,使用引号包裹

· 建议使用常见字体,否则兼容性不好 

5.1.2 设置字体大小

        div {
            font-size: 50px;
        }

说明:

· 不同浏览器默认字号不一样,chrome默认是16px

· 可以给body标签使用font-size

· 注意单位px,表示像素

· 标题标签需要单独指定大小

5.1.3 设置字体粗细

        div {
            font-weight: 500px;
        }
        span {
            font-weight: bold;
        }

· 可以使用数值表示粗细

· 700==bold400是不变粗细为normal,数字取值范围:100~900

5.1.4 设置文字样式 

        /* 倾斜 */
        div {
            font-style: italic;
        }
        /* 取消倾斜 */
        span {
            font-style: normal;
        }

5.2 文本属性

5.2.1 文本颜色

认识RGB

我们的显示器是由很多很多像素构成的,每个像素视为一个点,这个点能反映出一个具体的颜色,R(red)G(green)B(blue)的方式表示颜色,三种颜色按照不同的比例搭配,就能混合出各种颜色。

计算机中针对R,G,B三个分量,分别用一个字节表示(8个比特位,表示的范围是0-255,十六进制表示为00-FF),数值越大,表示该分量颜色就越浓,255,255,255就表示白色;0,0,0就表示黑色 

设置文本颜色

color:red;

color:#ff0000;

color:rgb(255,0,0); 

color属性值的写法:

· 预定义的颜色值(单词)

· 十六进制形式(常用)

· RGB方式

    <style>
        .c1 {
            color: green;
        }
    </style>
    <div class="c1">好好学习进大厂</div>

5.2.2 文本对齐

控制文字水平方向的对齐,除了文本,也能控制图片等元素对齐的方式

text-align:[值];

center:居中对齐

left:左对齐

right:右对齐 

    <style>
        .c1 {
            text-align: left;
        }
        .c2 {
            text-align: center;
        }
        .c3 {
            text-align: right;
        }
    </style>
    <div class="c1">左对齐</div>
    <div class="c2">居中对齐</div>
    <div class="c3">右对齐</div>

结果:

5.2.3 文本装饰(上划线,下划线,删除线)

text-decoration:[值]

常用值:

underline:下划线

none:啥都无,可以取掉下划线,删除线等

overline:上划线

line-through:删除线 

    <style>
        .c1 {
            text-decoration: overline;
        }
        .c2 {
            text-decoration: none;
        }
        .c3 {
            text-decoration: underline;
        }
        .c4 {
            text-decoration: line-through;
        }
    </style>
    <div class="c1">上划线</div>
    <div class="c2">啥都无</div>
    <div class="c3">下划线</div>
    <div class="c4">删除线</div>

结果:

5.2.4 文本的缩进与行高 

缩进:控制段落的首行缩进(其他行不受影响)

text-indent:[值];

单位可以用px或者em

em作为单位,1个em为一个文字大小

缩进可以为负数,表示往左缩进(文字就会冒出去) 

    <style>
        .c1 {
            text-indent: 2em;
        }
        .c2 {
            text-indent: -2em;
        }
    </style>
    <div class="c1">正常缩进</div>
    <div class="c2">反向缩进</div>

行高:行高是上下文本行之间基线距离

line-height:[值]

注意:行高 = 上边距 + 下边距 + 字体大小

HTML中涉及到这几个基准线:

· 顶线 · 中线 · 基线(相当于四线三格倒数第二条线)· 底线 

内容区:底线和顶线包裹的区域,即下图深灰色背景区域

基线之间的距离 = 顶线的距离 = 底线之间的距离 = 中线间距 

注意:行高与元素高度相等,就可以实现文字居中对齐

例:

    <style>
        div {
            height: 100px;
            line-height: 100px;
            font-size: 30px;
        }
    </style>
    <div>文字居中对齐</div>

5.3 背景属性

5.3.1 背景颜色

background-color:[指定颜色]

默认是transparent透明的,可以通过设置颜色的方式修改

    <style>
        div {
            background-color: blue;
        }
    </style>
    <div>设置蓝色背景</div>

5.3.2 背景图片

background-image:url(); 

注意:url可以是相对路径也可以是绝对路径,url可以加引号也可以不加

           url的路径必须正确,否则找不到照片

    <style>
        div {
            height: 1000px;
            width: 1000px;
            background-image: url(../10.jpg);
        }
    </style>
    <div>设置背景图片</div>

结果:

5.3.3 背景平铺 

background-repeat:[平铺方式]

重要值:

repeat:平铺

no-repeat:不平铺

repeat-x:水平平铺

repeat-y:垂直平铺

默认是repeat,背景颜色可以和背景图片同时存在,背景图片在背景颜色的上方

    <style>
        div {
            height: 1000px;
            width: 1000px;
            background-image: url(../作业/5.jpg);
            background-repeat: no-repeat;
            /* no-repeat  repeat  repeat-x  repeat-y */
        }
    </style>

repeat:

no-repeat:

repeat-x:

repeat-y:

5.3.4 背景位置

background-position:x y; 

注意:修改图片内容的位置 

参数:

方位名词:(top,left,right,bottom)

精确单位:坐标或者百分比(以左上角为原点)

混合单位:同时包含方位名词和精确单位

    <style>
        div {
            height: 1000px;
            width: 1000px;
            background-image: url("../10.jpg");
            background-position: center;
        }
    </style>
    <div>背景位置</div>

说明:没有把图片的位置放到屏幕中间,而是把图片内容的中间部分按要求大小展示在屏幕上 

注意:

如果参数的两个值都是方位名词,则前后顺序无关(top left与left top效果一样)

如果只指定了一个方位名词,则第二个默认居中(left就是水平居中,top就是垂直居中)

如果参数为精确值,则第一个为x,第二个为y

如果参数为精确值且只给了一个数值,则该数值为x坐标,另一个默认垂直居中

5.3.5 背景尺寸

background-size:length|percentage|cover|contain; 

· 可以填具体数值,40px 60px表示宽为40px,高为60px

· 也可以填百分比,按照父元素的尺寸设置

· cover,把背景图像扩展至足够大,以使背景图像完全覆盖背景区域,这样背景图片的某些位置就无法显示

· contain,把图像扩展至最大尺寸,以使宽度,高度完全适应内容区域

contain:

cover:

5.4 圆角矩形

使用border-radius使边框带圆角效果

border-radius:length;

length:内切圆半径,数值越大,弧线越强烈

    <style>
        /* 普通圆角矩阵 */
        #d1 {
            width: 300px;
            height: 200px;
            border: 2px solid blueviolet;
            border-radius: 20px;
        }
        /* 圆形 */
        #d2 {
            width: 200px;
            height: 200px;
            border: 2px solid blueviolet;
            border-radius: 50%;
            /* 50%也可以替换为数值100px */
        }
        /* 圆角矩阵 */
        #d3 {
            width: 300px;
            height: 200px;
            border: 2px solid blueviolet;
            border-radius: 100px;
        }
    </style>
    <div id="d1"></div>
    <div id="d2"></div>
    <div id="d3"></div>

展开写法:可以针对四个角分别设置

border-radius:2em; 相当于四个角全都是2em

border-radius:10px 20px 30px 40px
等价于 (按顺时针旋转)
border-top-left-radius:10px;
border-top-right-radius:20px;
border-bottopm-right-radius:30px;
border-bottom-left-radius:40px;

6. 元素的显示模式

这里重点介绍两个:块级元素      行内元素

6.1 块级元素

常见的元素:

h1-h6
p
div
ul ol li
... 

特点:

独占一行
高度,宽度,内外边距,行高都可以控制
宽度默认是父级元素宽度的100%
是一个容器盒子,里面可以放行内元素和块级元素 

 注意:

· 文字类元素内不能使用块级元素
· p标签主要用于存放文字,内部不能放块级元素,特别是div

6.2 行内元素/内联元素

常见元素:

a
strong
b
em
i
del
span
... 

特点:

· 设置行高,宽度,高度无效
· 左右外边距有效(上下无效),内边距有效
· 默认高度就是内容本身的高度
· 行内元素只能容纳文本和其他行内元素,不能放块级元素 

注意:

a标签内不能在放a标签
a标签可以放块级元素,但是先把a转换为块级元素

行内元素与块级元素的区别

· 块级元素独占一行,行内元素不独占一行
· 块级元素可以设置宽高,行内元素不能设置宽高
· 块级元素四个方向都能设置内外边距,行内元素垂直方向不能设置

6.3 改变显示模式 

使用display属性可以修改元素的显示模式

display:block,改成块级元素

display:inline,改成行内元素

display:inline-block ,改成行内块元素

7. 盒模型(重点)

每一个HTML元素相当于是一个矩形盒子,这个盒子由以下几部分构成:

边框:border
内容 :content
内边距:padding
外边距:margin

7.1 边框

基础属性

粗细:border-width

样式:border-style,默认没有边框,solid实线边框,dashed虚线边框,dotted点线边框

颜色:border-color

例:

    <style>
        div {
            width: 300px;
            height: 50px;
            border-style: dashed;
            border-color: blue;
            border-width: 5px;
        }
    </style>

可以简写(建议),减少代码量

border:5px solid red; 

可以改变四个方向的任意边框

border-top/bottom/left/right 

例:给边框的四个方向设置不同的颜色和属性

    <style>
        div {
            width: 400px;
            height: 100px;
            border-top: 3px solid red;
            border-right: 3px dashed blue;
            border-bottom: 3px dotted green;
            border-left: 3px dashed yellow;
        }
    </style>

注意:边框会撑大盒子

可以看到weight,height为400,100,但是整个盒子为406*106,多出来的那部分为边框像素的大小。

可以通过box-sizing属性可以修改浏览器的行为,使边框不在撑大盒子

        * {
            box-sizing: border-box;
        }

可以看到盒子的大小又恢复400*100了

7.2 内边距

padding设置内容和边框之间的距离

默认内容是顶着边框来放置的,用padding来控制这个距离

给四个方向都加边框

· padding-top
· padding-bottom
· padding-left
· padding-right

 不加内边距:

    <style>
        div {
            width: 200px;
            height: 100px;
        }
    </style>
    <div>内边距</div>

加上内边距padding后:

    <style>
        div {
            width: 200px;
            height: 100px;
            padding: 5px;
        }
    </style>

注意:内边距也会影响到盒子的大小,使用box-sizing:border-box;不在撑大盒子

复合写法:

padding:5px;表示四个方向都是5px

padding:5px 10px 20px 30px;上,右,下,左(顺时针方向,与设置边框的复合写法类似)

7.3 外边距

控制盒子与盒子之间的距离

· margin-top
· margin-bottom
· margin-left
· margin-right 

不加外边距:

    <style>
        #i1 {
            width: 200px;
            height: 100px;
        }
        #i2 {
            width: 200px;
            height: 100px;
        }
    </style>
    <div id="i1">哈哈</div>
    <div id="i2">嘿嘿</div>

加了外边距margin后:

    <style>
        #i1 {
            width: 200px;
            height: 100px;
            margin: 5px;
        }
        #i2 {
            width: 200px;
            height: 100px;
            margin: 5px;
        }
    </style>

复合写法:与padding相同

7.4 块级元素水平居中

三种写法:

margin-left:auto;margin-right:auto;
margin:auto;
margin:0 auto; 

示例:

    <style>
        #i1 {
            width: 200px;
            height: 100px;
            margin: auto;
        }
    </style>
    <div id="i1">哈哈</div>

注意:这种居中方式和text-align不一样,margin:auto是给块级元素用的,text-align:center是让行内元素或者行内块元素居中的

7.5 去除浏览器默认样式

浏览器会给元素加上一些默认的样式,尤其是内外边距,不同浏览器的默认样式存在差别,为了保证在不同的浏览器上运行的效果相同,往往去掉浏览器默认样式,使用通配符去掉浏览器默认样式:

        * {
            margin: 0;
            padding: 0;
        }

7.6 弹性布局

display:flex;

示例:创建一个div包含3个span

    <style>
        div {
            width: 100%;
            height: 100px;
            background-color: red;
        }
        div>span {
            background-color: green;
            width: 100px;
        }
    </style>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>

给div加上display:flex;后:

        div {
            width: 100%;
            height: 100px;
            background-color: red;
            display: flex;
        }

  

此时看到,span不在是行内元素了,再给div加上justify-content:space-around;此时效果:

此时可以看到,span已经能够水平隔开了

justify-content:space-around;改为justify-content:flex-end,此时效果:

flex布局的基本概念

flex是flexible box的缩写,意思为弹性盒子
任何一个html元素,都可以指定为display:flex完成弹性布局

flex布局的本质是给父盒子添加display:flex属性,来控制盒子的位置和排列方式

概念:

· 被设置为display:flex属性的元素,称为flex container

· 它的所有子元素立刻称为了该容器的成员,称为flex item

· flex item 可以纵向排列,也可以横向排列,称为flex direction(主轴)

常用属性

justify-content:设置主轴上的子元素排列方式

flex-start 默认值,位于容器开头
flex-end 位于容器结尾
center 位于容器中央
space-between 行与行之间有间隔
space-around 行之前,行之间,行之后又间隔

center效果展示:

space-between效果展示:

align-items:设置侧轴上元素排列方式

stretch 默认值,行拉伸以占据剩余空间
center 朝着弹性容器的中央对行打包
flex-start 朝着弹性容器的开头对行打包
flex-end 朝着弹性容器的结尾对行打包
space-between 行均匀分布在弹性容器中
space-around 行分布在弹性容器中,两端各占一半

stretch效果展示:

center效果展示:

flex-start,flex-end效果展示:

  

可以使用align-items实现垂直居中:

     <style>
        div {
            width: 500px;
            height: 300px;
            background-color: green;
            display: flex;
            justify-content: space-around;
            align-items: center;
        }
        div>span {
            background-color: red;
            width: 150px;
            height: 100px;
        }
    </style>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>

注意:align-items只能针对单行元素来实现,如果有多行元素,就需要使用items-contents 

猜你喜欢

转载自blog.csdn.net/qq_58710208/article/details/123661602