CSS简识

简介: 本文主要介绍用于丰富前端界面的语言——CSS,只介绍一些较为常用的知识。

1.CSS简介


在上文【HTML简识】中,我们初步了解了前端代码,但通过HTML,只是完成了一个页面的骨架,真正描述页面的样式即丰富页面内容,需要通过CSS来实现。


2.CSS基本知识


2.1 基本语法规则


每一个CSS语句包含两个部分:

选择器+应用的属性


微信图片_20230111145513.png

{}中写CSS的各种属性,都是通过键值对的结构来完成的;


键值对之间使用;来分割,习惯上每个键值对独占一行。

键和值之间使用:来分割,习惯上会在冒号后面加个空格。

每个键值对就对应一个CSS的属性。


注意:

在CSS中的注释风格为/* */,其他方式的注释并不支持。


2.2 引入方式


1.内部样式表

将CSS代码放入style标签中,然后style标签可以放到html文件中的任意位置(一般放到head标签中)。


微信图片_20230111145521.png

2.内联样式


通过html标签中的style属性,来指定某个标签的样式。

只适合于写简单样式,只针对某个标签生效,只针对当前元素生效。


<p style="color:red">
        hello world
    </p>


3.外部样式


在实际开发中最为常用的样式,这种方式把CSS代码单独提取出来,放到了一个.css文件中,然后在html代码中,通过link标签,来引入该CSS文件。(通过这样的方式,可以使得样式和结构彻底分离)


样例:

创建style.css


p {
    color: red;
}


创建demo.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>LDJ</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <p >
        hello world
    </p>
</body>


预览效果:


微信图片_20230111145528.png

2.3 选择器


2.3.1 基础选择器


基础选择器是由单个选择器构成的

1.标签选择器

写的选择器就是一个html的标签名


<style>
    p {
        color: red;
    }
</style>


2.类选择器


通过类选择器可以选择任意元素,首先在CSS代码中创建一个类名,在对应的html元素中,通过class属性来引用这个类名,此时具有该类名的元素,就都会应用上相关的CSS属性。


语法:


类名用.开头

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

class属性引用类名不用带.


微信图片_20230111145531.png

3.id选择器

和类选择器类似


CSS中使用#开头表示id选择器

id选择器的值和html中某个元素的id值相同

html的元素id不必带#

id是唯一的,不能被多个标签使用(是和类选择器最大的区别)

<style>
       #ha {
        color: red;
       }
    </style>
    <p id="ha">
        哈哈哈哈哈哈哈哈哈哈
    </p>


类比:

姓名是类选择器,可以重复

身份证号码是id选择器,是唯一的


4.通配符选择器


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


* {
  color:red;
}


页面所有内容都会变为红色


基础选择器小结:



作用 特点
标签选择器 能选出所有相同标签 不能差异化选择
类选择器 能选出一个或多个标签 根据需求选择,最灵活常用
id选择器 能选出一个标签 同一个id在一个HTML中只能出现一次
通配符选择器 选择所有标签 特殊情况下使用


2.3.2 复合选择器


复合选择器是把多种基础选择器综合运用起来


1.后代选择器


通过选择器的组合,选择某个元素中的某个后代元素


语法细则:


选择器1 选择器2 {
}


1)中间必须有空格

2)选择器1和选择器2都可以是标签选择器/类选择器/id选择器


代码示例:

找ul标签里是否有class为name的元素


ul .name {
   color: aqua;
}


2.子选择器


通过多个选择器的组合,能够选中某个元素里面的子元素。


语法:


选择器1>选择器2 {
}
ul>a {
   color: blue;
}

3.并集选择器


并列的写多个选择器,中间使用逗号赖分割

这里的并集选择器,里面可以写简单的选择器,也可以选择复合的选择器


代码示例:


ul>li {
    color: aquamarine;
}
ol>li {
    color: brown;
}


4.伪类选择器


当遇到不同的事件时,有不同的格式反应


链接伪类选择器:

a:hover 选择鼠标指针悬停上的链接

a:active 选择活动链接(鼠标按下了但是未弹起)


 

<style>
        p {
            font-size: large;
        }
        p:hover {
            color: red;
        }
        p:active {
            color: green;
        }
    </style>
    <p>
        喵喵
    </p>


效果预览:


微信图片_20230111145538.gif

复合选择器小结

选择器 作用 注意事项
后代选择器 选择后代元素 可以是孙子元素
子选择器 选择子元素 只能选子元素,不能选孙子元素
并集选择器 选择相同样式的元素 更好的代码重用
伪类选择器 选择不同的状态 重点掌握 hover的写法


2.4 常用元素属性


CSS常用元素有很多,可以参考文档

下边主要介绍CSS中最为常用的几种元素属性:


2.4.1 文本属性


常用的文本属性见下:


  • color,表示字体颜色,使用RGB的方式来调整颜色(三个数值分别表示红、黄、蓝,也可以使用十六进制的数字来表示)
  • font-size,表示字体的大小,常用单位为px
  • font-family,表示字体格式,比如宋体,楷体等
  • font-weight,表示字体粗细,可以使用数字和常用英文单词设置
  • font-style,表示字体样式,如倾斜,值为italic表示设置倾斜,值为normal表示 取消倾斜,多用于取消倾斜
  • text-align,表示文本对齐,left左对齐,right右对齐,center居中对齐。
  • text-decoration,表示文本装饰,可以设置和取消下划线或删除线,值为none表示取消下划线和删除线,underline表示下划线,line-through表示删除线,overline上划线


代码示例:


<style>
        .one {
            color:#0000ac; 
            /* 16进制表示rgb颜色 */
            font-family: 宋体;
            /* 字体种类 */
            font-size: 16px;
            /* 字体大小 */
            text-decoration: underline;
            /* 下划线 */
        }
        .two {
            color:rgb(255,0,0);
            font-family: 微软雅黑;
            font-size: 16px;
            text-align: center;
            /* 居中对齐 */
            text-decoration: overline;
            /* 上划线 */
        }
        .three {
            color: rgb(0, 255,255);
            font-family: 楷体;
            font-size: 16px;
            text-align: right;
            /* 右对齐 */
            text-decoration: none;
            /* 什么都没有 */
        }
    </style>
    <div class="one">
        这是第一段文本
    </div>
    <div class="two">
        这是第二段文本
    </div>
    <div class="three">
        这是第三段文本
    </div>


预览效果:


微信图片_20230111145543.png

2.4.2 文本格式


常用文本格式属性如下:


text-indent,表示段落缩进,单位可以使用px或者em;一个em就是当前元素的文字大小

line-height,行高指上下文本行之间的基线距离(字体大小+行间距)

代码示例:


微信图片_20230111145546.png

2.4.3 背景属性


  • background-color:[指定颜色];背景颜色,其用法与设置字体颜色方法相同,可以使用英文单词或者rgb,默认值为transparent(应用了父元素的背景)
  • background-image:url(...);,背景图片
  • background-repeat:[平铺方式];,设置背景图片的平铺效果(背景图片和背景颜色可以共存,背景图会出现在背景颜色的上方)


微信图片_20230111145549.png

  • background-position: x y;设置背景图片位置,参数可以是方位名词(top,left,right,bottom,center)或者精确单位(像素坐标或者百分比,左上角为原点)
  • background-size:数字px或单词;,设置背景图片的大小,可以通过数字px的方式来直接设置背景的宽度和高度,还可以使用单词contain(保证背景图始终在元素之内,可能会露出一部分背景色)、cover(完全覆盖,不会让元素露出背景色)来让背景图自适应元素大小


代码示例:


微信图片_20230111145552.png

2.4.4 圆角矩形


通过border-radius使边框带圆角效果


基本用法:


border-radius:length;

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


没有经过处理的矩形边框:


微信图片_20230111145555.png


使用border-radius属性后的矩形:


微信图片_20230111145558.png


如果原来的元素区域是正方形,当border-radius属性的值为该区域边长的一半时(也可以以值为50%来实现相同的效果),可以生成圆形区域


微信图片_20230111145601.png


2.4.5 元素的显示模式


  • 块级元素:独占一行,可以设置宽度高度(属于块级元素的标签:div、h1-h6、p、ul、li、table…)
  • 行内元素:不独占一行,不能设置宽度高度(属于行内元素的标签:span、a、em、i…)
  • 行内块元素:不独占一行,能够设置宽度高度(属于行内块元素的标签:input、img)

在实际开发中往往通过display来把行内元素改成块级元素(因为行内元素不能设置宽度高度)。


微信图片_20230111145604.png


如上图所示,对a标签的格式并没有生效,我们可以通过display来修改样式


微信图片_20230111145607.png


修改生效后如下图:


微信图片_20230111145611.png


2.4.6 盒子模型


其实每个HTML元素都相当于一个矩形的盒子,由下边几部分组成:


margin:外边距

padding:内边距

border:边框

content:内容


微信图片_20230111145614.png

设置边框:

边框属性的值分别为粗细、颜色、样式,设置边框的粗细会改变原有元素的大小,可以通过 box-sizing 属性来使得边框不再撑大盒子。


微信图片_20230111145619.png


设置内边距:


微信图片_20230111145628.png


设置外边距:


微信图片_20230111145631.png


当两个元素的外边距不同时,对于竖直方向元素的外边距会变为两者边距的最大值,这种现象称为外边距塌陷;对于水平方向,最终外边距是两个元素的外边距之和。


基于margin实现元素水平居中

文本的水平居中:text-align:center

文本的垂直居中:line-height==height

元素的水平居中:margin:0 auto;

元素的垂直居中:margin不能实现


微信图片_20230111145634.png

2.4.7 弹性布局


默认的网页布局是从上到下的(块级元素独占一行),实际的网页不仅仅需要从上到下,也需要从左到右。


微信图片_20230111145639.png

如上图所示,div默认作为块级元素,是独占一行的,为了让这些div能够在一个横行中排列,就可以使用弹性布局。给父元素设置一个属性:display:flex;


微信图片_20230111145643.png

通过flex布局,就可以调整子元素排列的方式,但这些元素默认都是挤在左上角的,如果想让这些元素水平方向排列,需要有属性justify-content


start靠左排列

end靠右排列

center居中排列

space-between让元素中间有一些等分的间隔(浏览器自动计算)

space-around 让元素中间有一些等分的间隔,最左边和最右边也有间隔。


微信图片_20230111145646.png


对于竖直方向,可以设置align-items属性,start顶端排列,end底端排列,center垂直居中排列


微信图片_20230111145650.png


3.经典布局案例


期待效果:


微信图片_20230111145653.png

代码实现:


<style>
        /* 改变全局默认样式 */
       * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
       }
       /* 导航栏 */
       .nav {
        width: 100%;
        height: 50px;
        background-color: rgb(60,60,60);
        color: white;
        text-align: center;
        line-height: 50px;
        font-size: 20px;
       }
       /* 中间区域 */
       .container {
        width: 100%;
        height: 1000px;
        background-color: grey;
        display:flex;
        justify-content: center;
        align-items: center;
       }
       /* 左右边栏 */
       .container .left,.container .right {
        width: 20%;
        height: 100%;
        background-color: rgb(17,107,17);
        font-size: 20px;
        line-height: 1000px;
        text-align: center;
        color: white;
       }
       /* 内容区域 */
       .container .content {
        width: 60%;
        height: 100%;
        background-color: rgb(163,35,35);
        font-size: 20px;
        line-height: 1000px;
        text-align: center;
        color: white;
       }
       /* 页脚区域 */
       .footer {
        width: 100%;
        height: 150px;
        background-color: rgb(60,60,60);
        color: white;
        font-size: 20px;
        text-align: center;
        line-height: 150px;
       }
    </style>
    <div class="nav">
        导航栏
    </div>
    <div class="container">
        <div class="left">
            左侧边栏
        </div>
        <div class="content">
            内容区域
        </div>
        <div class="right">
            右侧边栏
        </div>
    </div>
    <div class="footer">
        页脚
    </div>


效果预览:

微信图片_20230111145658.png



相关文章
|
6月前
|
前端开发 搜索推荐
|
5月前
|
前端开发
CSS外部样式
CSS外部样式
|
5月前
|
前端开发 JavaScript
CSS
【6月更文挑战第25天】CSS。
33 0
|
6月前
|
XML 前端开发 数据格式
什么是CSS?
什么是CSS?
|
6月前
|
前端开发
CSS总结干货
行内样式表(行内式) 行内样式表(内联样式表)是在元素标签内部的 style 属性中设定 CSS 样式。适合于修改简单样式. ​ 语法:
|
前端开发
很实用的几个css小技巧
很实用的几个css小技巧
93 0
|
前端开发 容器
你需要知道的 CSS 技巧
你需要知道的 CSS 技巧
|
前端开发
|
前端开发
什么是CSS?
什么是CSS?
164 0