大 纲

前端的作用于采集输入信息,后端进行处理。计算机程序的界面样式,视觉呈现属于前端。本页主要记录我学习 CSS 过程中觉得实用的笔记。

层叠样式表 Cascading Style Sheets 是一种用来表现HTML或XML等文件样式的计算机语言。不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

其中p选择器 是需要改变样式的元素;color属性 是需要改变的样式属性;red 是属性的描述值。

p {
  color: red;
  text-align: center;
}

盒子模型

上图是一个标准盒子模型的示意图,可以看出每个盒子由四个区域组成,由里到外依次是内容、内边框、边框和外边框。

标签名 名称 描述
margin 外边距 清除边框外的区域,外边距是透明的。
border 边框 围绕在内边距和内容外的边框。
padding 内边框 清除内容周围的区域,内边距是透明的。
content 内容 盒子的内容,显示文本和图像。
top 顶部 用于确定方向。
bottom 底部 用于确定方向。
left 左边 用于确定方向。
right 右边 用于确定方向。

内容 content

内容区域装着元素想要展示的的基本内容,可以是文本、图片、视频等,可通过调整所装的内容尺寸来改变内容区域的尺寸。下列插入两个 90px 宽,60px 高的方块。

A
B

内边框 cpadding

内边框算是内容的拓展,负责给内容排开周围的区域的其他元素,常用作“留白”。可通过 padding-toppadding-rightpadding-bottompadding-leftpadding来控制内边框的粗细。

我们发现两个方块默认情况下紧贴在一起,可以通过增加内边框使他们看起来更协调。绿色区域仅为表示内边框,实际默认为透明。

.box {
  padding: 10px;
}
A
B

你还可以使用 padding 属性,一次性输入多个数值来调整四周的内边框,或者在后面增加方位来单独调整特定方位。

.box {
  padding: 10px 20px 30px 40px;
}
A
.box {
  padding-top: 10px;
}
A

边框 border

边框算是内边框的拓展,是盒子模型实质上的边界,可通过 border-width来控制边框粗细,同样在后面增加方位可以单独调整特定方位。也可给定线形: solid(实线) none(无边框) double(双线) dashed(虚线) dotted(点划线)来控制边框风格。

.box {
  border: 10px solid #ced4da;
}
A

外边框 margin

外边框算是边框的拓展,它其实已经不算做该元素的范围,可通过 margin-width来控制边框粗细,同样在后面增加方位可以单独调整特定方位。

不同元素的外边框是可以重叠的,可对比下图与内边框图观察两方块交界处的宽度来理解它们的不同之处。

.box {
  margin: 10px;
}
A
B

位置属性 Position

进行 CSS 布局前,还得了解 position 位置属性,它用于确定元素的定位方式,选择合适的定位方式能快速实现布局需求。

.box{
  position: absolute;
  left: 20px;
  top: 30px;
}
属性 描述 值举例
position 位置 static(静态)
relative(相对定位)
fixed(固定定位)
absolute(绝对定位)
sticky(粘性定位)

浮动属性 Float

在布局过程中,有事需要两个元素处于同一行,这时就要用到 floatclear 属性,它用于确定元素是否浮动。

.box{
  float: left;
}
属性 描述 值举例
float 浮动 left(左侧浮动)
right(右侧浮动)
none(取消浮动)
clear 取消浮动 left(取消左侧浮动)
right(取消右侧浮动)
both(取消两侧浮动)
none(允许浮动)

弹性布局

Flex 是 Flexible Box(弹性布局)的缩写,给盒子指定 Flex 属性能大大提升布局时的灵活性。

.box{
  display: flex;
}

容器属性 container

使用 Flex 布局的盒子称作 Flex容器,简称 容器 (container)。它所包含的全部子元素被称作 Flex项目,简称 项目 (item)。容器具有以下属性:

属性 描述 值举例
flex-direction 轴线方向 row(水平左至右)
row-reverse(水平右至左)
column(垂直上至下)
column-reverse(垂直下至上)
flex-wrap 换行 nowrap(不换行)
wrap(上至下换行)
wrap-reverse(下至上换行)
flex-flow 主轴方向 row(水平左至右)
row-reverse(水平右至左)
column(垂直上至下)
column-reverse(垂直下至上)
justify-content 水平对齐 flex-start(左对齐)
flex-end(右对齐)
center(居中)
space-between(两端对齐)
space-around(等间距)
align-items 垂直对齐 flex-start(上对齐)
flex-end(下对齐)
center(居中)
baseline(文本基线对齐)
stretch(占满高度)
align-content 轴线对齐 flex-start(上对齐)
flex-end(下对齐)
center(居中)
space-between(两端对齐)
space-around(等间距)
stretch(占满高度)

项目属性 item

属性 描述 值举例
order 排序 0(数字,小数靠前)
flex-grow 放大比例 0(数字,按比例分配空间)
flex-shrink 缩小比例 1(数字,按比例分配空间)
flex-basis 主轴空间 auto(自动) 100px(尺寸)
align-self 特例对齐 flex-start(上对齐)
flex-end(下对齐)
center(居中)
baseline(文本基线对齐)
stretch(占满高度)

项目属性中的 flex-growflex-shrinkflex-basis可以简写为 flex,写法如下:

.item {
  flex: 0 0 100px;
}

文本样式

属性 功能描述 值举例
color 颜色 #ffffff(颜色代码)
direction 文本方向 ltr(左到右) rtl(右到左)
letter-spacing 字间距 -3px(数值)
line-height 行高 200%(百分数)
text-align 对齐 justify(两端对齐)
center(居中)
left(左对齐)
right(右对齐)
text-decoration 文本修饰 overline wavy red(上划红色波浪线)
line-through(删除线)
underline(下划线)
text-indent 首行缩进 3px(数值)
text-shadow 文本阴影 2px 2px #ff0000(XY偏移值、颜色代码)
text-transform 字母大小写 uppercase(大写)
capitalize(大小写)
lowercase(小写)
vertical-align 垂直对齐 baseline(在父元素的基线上)
sub(垂直对齐文本下标)
super(垂直对齐文本上标)
top( 顶端与行中最高元素顶端对齐)
text-top( 顶端与父元素字体顶端对齐)
middle(在父元素的中部)
bottom(底端与行中最低的元素顶端对齐)
text-bottom(底端与父元素字体底端对齐)
-30%(使用line-height的值来排列此元素)
inherit(从父元素继承属性)
white-space 空白区域处理 normal(忽略)
pre(保留)
nowrap(不换行直到</br>)
pre-wrap(保留并正常换行)
pre-line(合并空白符)
inherit(从父元素继承属性)
word-spacing 字间距 3px(数值)

字体样式

body {
  font-family: 'Times New Roman', sans-serif;
  src: url('TimesNewRoman.ttf');
}

提示

除了加载本地字体外,你还可以选择直接调用 Google Fonts 在线字体库。

属性 功能描述 值举例
font-family 字体系列 "Times New Roman"(字体名)
sans-serif(无衬线字体)
serif(衬线字体)
font-style 字体样式 normal(正常)
italic(斜体)
oblique(倾斜)
font-size 字体大小 40px(数值)
2.5em(数值,px/16=em)
100%(百分数,body属性值*100%)
font-weight 字体粗细 200(整百分数)

链接样式

a:hover {
  text-decoration: underline;
  background-color: #666666;
}

a:after {
  content: "»";
}
标签名 功能描述
:link 正常,未访问过的链接
:visited 已访问过的链接
:hover 鼠标放在链接上
:active 链接被点击时
:focus 链接被点击后
:before 在元素前增添元素
:after 在元素后增添元素
:target 用于选中浏览器 URL 的 hash 部分所指示的元素
:any-link 表示任意的链接,包括 a、area 和 link 标签都可能匹配到这个伪类

新窗口打开链接

<head>
  <base target="_blank" />
</head>
<body>
  <a href="https://www.eyecus.com/" target="_blank">视由</a>
</body>
.eyecus-btn a:active {
 text:expression(target="_blank");
}

背景样式

body {
  background-color: #ffffff;
}
属性 功能描述 值举例
background-color 背景颜色 #ffffff(颜色代码)
background-image 背景图像 url('paper.gif')(图片URL)
background-repeat 背景图像排列 repeat-x(水平平铺)
repeat-y(垂直平铺)
no-repeat(不平铺)
background-position 背景图像定位 right top(左上角)
background-attachment 背景图像滚动 flase(假) true(真)

阴影样式

.nav {
  box-shadow: inset 10px -10px 3px 1px #666666;
}
属性 功能描述 值举例
inset 内阴影 inset(内阴影)
h-shadow 水平方向偏移 10px(数值)
v-shadow 水平方向偏移 -10px(数值)
blur 模糊距离 3px(数值)
spread 阴影尺寸 1px(数值)
color 阴影颜色 #666666(颜色代码)

边框样式

p {
  border: 3px solid #666666;
  border-radius: 15px 50px 30px 3px;
}
属性 功能描述 值举例
border-width 边框宽度 3px(数值)
border-style 边框样式 solid(实线)
none(无边框)
double(双线)
dashed(虚线)
dotted(点划线)
border-color 边框颜色 #666666(颜色代码)
border-radius 倒圆角 15px 50px 30px 3px
(数值 左上 右上 右下 左下)

动画延迟

.btn:hover {
  box-shadow: 3px 5px 8px rgba(0, 0, 0, 0.1);
  transition: all 0.3s ease-in-out;
}

背景毛玻璃效果

.header {
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  backdrop-filter: saturate(180%) blur(20px);
  background-color: rgba(255,255,255,0.72);
}

滚动条样式

禁用竖向滚动条

body {
  overflow:scroll;
  overflow-y:hidden;
}

自定义滚动条

*::-webkit-scrollbar {
  width: 5px;
  height: 5px;
}

*::-webkit-scrollbar-thumb {
  border-radius: 10px;
  -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
  background: #535353;
}

*::-webkit-scrollbar-track {
  -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
  border-radius: 10px;
  background: #ccc;
}

常用功能

添加渐变色,线性渐变 / 圆心渐变

background: -webkit-gradient(linear, left top, left bottom, from(#3874AF), to(#3598DB));

background-image: linear-gradient(-180deg,#fafbfc,#eff3f6 90%);

linear-gradient(#D1EEFC, #81F3FD);
radial-gradient(#FEFD58, #71FCA6, #52EDC7);

使链接在同一行显示

a { word-break: keep-all; }

禁止浏览器为被激活的输入框添加边框

*:focus {
  outline: none;
}

载入本地字体

@font-face {
  font-family:'Awesome Font';
  font-style: normal;
  font-weight: 400;
  src: local('Awesome Font'),
       url('/fonts/awesome.woff2') format('woff2'),
       url('/fonts/awesome.woff') format('woff'),
       url('/fonts/awesome.ttf') format('truetype'),
       url('/fonts/awesome.eot') format('embedded-opentype');
}
@font-face {
  font-family:'Awesome Font';
  font-style: italic;
  font-weight: 400;
  src: local('Awesome Font Italic'),
       url('/fonts/awesome-i.woff2') format('woff2'),
       url('/fonts/awesome-i.woff') format('woff'),
       url('/fonts/awesome-i.ttf') format('truetype'),
       url('/fonts/awesome-i.eot') format('embedded-opentype');
}

参考资料

  1. 维基百科 https://zh.wikipedia.org/