CSS高级教程

CSS高级教程

因为Typora的老毛病,代码和文字一多,就会卡的不行,因此另开一篇水文。接上文CSS慢学

圆角

CSS border-radius 属性定义元素角的半径。

用法大概清楚,有个椭圆角的,有点牛。

上面这个是x长移动,y短一点,下面这个就变成了完全的椭圆。

#rcorners1 {
  border-radius: 50px / 15px;
  background: #73AD21;
  padding: 20px; 
  width: 200px;
  height: 150px; 
}

#rcorners3 {
  border-radius: 50%;
  background: #73AD21;
  padding: 20px; 
  width: 200px;
  height: 150px;
}

边框图像

border-image属性,该属性有三部分:

  • 用作边框的图像
  • 在哪里裁切图像
  • 定义中间部分应重复还是拉伸

border-image 属性接受图像,并将其切成九部分,就像井字游戏板。然后,将拐角放置在拐角处,并根据您的设置重复或拉伸中间部分。

**注意:**为了使 border-image 起作用,该元素还需要设置 border 属性!

**提示:**border-image 属性实际上是以下属性的简写属性:

  • border-image-source
  • border-image-slice
  • border-image-width
  • border-image-outset
  • border-image-repeat
#borderimg {
  border: 10px solid transparent;
  padding: 15px;
  border-image: url(border.png) 30 stretch;
}

多重背景

CSS 允许您通过 background-image 属性为一个元素添加多幅背景图像。

不同的背景图像用逗号隔开,并且图像会彼此堆叠,其中的第一幅图像最靠近观看者。

下面的例子有两幅背景图像,第一幅图像是花朵(与底部和右侧对齐),第二幅图像是纸张背景(与左上角对齐):

#example1 {
  background-image: url(flower.gif), url(paper.gif);
  background-position: right bottom, left top;
  background-repeat: no-repeat, repeat;
}

background-size 的其他两个可能的值是 containcover

contain 关键字将背景图像缩放为尽可能大的尺寸(但其宽度和高度都必须适合内容区域)。这样,取决于背景图像和背景定位区域的比例,可能存在一些未被背景图像覆盖的背景区域。

cover 关键字会缩放背景图像,以使内容区域完全被背景图像覆盖(其宽度和高度均等于或超过内容区域)。这样,背景图像的某些部分可能在背景定位区域中不可见。

全尺寸背景图像

现在,我们希望网站上的背景图像始终覆盖整个浏览器窗口。

具体要求如下:

  • 用图像填充整个页面(无空白)
  • 根据需要缩放图像
  • 在页面上居中图像
  • 不引发滚动条
html {
  background: url(img_man.jpg) no-repeat center fixed; 
  background-size: cover;
}

带有文本的大图像

这个也曾经是我想要的404界面设计。

https://www.w3school.com.cn/tiy/t.asp?f=css3_background_hero

指定背景图像的位置

background-origin

该属性接受三个不同的值:

  • border-box – 背景图片从边框的左上角开始
  • padding-box -背景图像从内边距边缘的左上角开始(默认)
  • content-box – 背景图片从内容的左上角开始

指定背景的绘制区域

background-clip 属性指定背景的绘制区域。

CSS background-clip 属性指定背景的绘制区域。

该属性接受三个不同的值:

  • border-box – 背景绘制到边框的外部边缘(默认)
  • padding-box – 背景绘制到内边距的外边缘
  • content-box – 在内容框中绘制背景

其他

渐变颜色:https://www.w3school.com.cn/css/css3_gradients.asp

文字阴影:https://www.w3school.com.cn/css/css3_shadows.asp

元素阴影:https://www.w3school.com.cn/css/css3_shadows_box.asp

文本效果,包括文字溢出,字换行,换行规则,书写模式:https://www.w3school.com.cn/css/css3_text_effects.asp

web字体:https://www.w3school.com.cn/css/css3_fonts.asp

工具提示:https://www.w3school.com.cn/css/css_tooltip.asp

图像样式:https://www.w3school.com.cn/css/css3_images.asp

object-fit 属性:https://www.w3school.com.cn/css/css3_object-fit.asp

按钮:https://www.w3school.com.cn/css/css3_buttons.asp

分页实例:https://www.w3school.com.cn/css/css3_pagination.asp

多列:https://www.w3school.com.cn/css/css3_multiple_columns.asp

用户界面:https://www.w3school.com.cn/css/css3_user_interface.asp

2D转换

通过使用 CSS transform 属性,您可以利用以下 2D 转换方法:

  • translate()
  • rotate()
  • scaleX()
  • scaleY()
  • scale()
  • skewX()
  • skewY()
  • skew()
  • matrix()

translate() 方法

方法从其当前位置移动元素(根据为 X 轴和 Y 轴指定的参数)。

div {
  transform: translate(50px, 100px);
}

rotate() 方法

rotate() 方法根据给定的角度顺时针或逆时针旋转元素。正值是顺时针,负值是逆时针

/*顺时针旋转20度*/
div {
  transform: rotate(20deg);
}

scale() 方法

scale() 方法增加或减少元素的大小(根据给定的宽度和高度参数)。

下面的例子把

元素增大为其原始宽度的两倍和其原始高度的三倍:
div {
  transform: scale(2, 3);
}

scaleX() 宽度,scaleY() 高度

skew() 方法

skew() 方法使元素沿 X 和 Y 轴倾斜给定角度。

skewX() 方法使元素沿 X 轴倾斜给定角度。

skewY() 方法使元素沿 Y 轴倾斜给定角度。

matrix() 方法

matrix() 方法把所有 2D 变换方法组合为一个。

matrix() 方法可接受六个参数,其中包括数学函数,这些参数使您可以旋转、缩放、移动(平移)和倾斜元素。

参数如下:matrix(scaleX(),skewY(),skewX(),scaleY(),translateX(),translateY())

3D转换

通过 CSS transform 属性,您可以使用以下 3D 转换方法:

  • rotateX()
  • rotateY()
  • rotateZ()

rotateX() 方法

rotateX() 方法使元素绕其 X 轴旋转给定角度(这种是我想象中的,因为是3D的)

#myDiv {
  transform: rotateX(150deg);
}

rotateY() 方法

rotateY() 方法使元素绕其 Y 轴旋转给定角度:

rotateZ() 方法

rotateZ() 方法使元素绕其 Z 轴旋转给定角度:

过渡

这个更需要看实例:https://www.w3school.com.cn/css/css3_transitions.asp

  • transition
  • transition-delay
  • transition-duration
  • transition-property
  • transition-timing-function

指定过渡的速度曲线

transition-timing-function 属性规定过渡效果的速度曲线。

transition-timing-function 属性可接受以下值:

  • ease – 规定过渡效果,先缓慢地开始,然后加速,然后缓慢地结束(默认)
  • linear – 规定从开始到结束具有相同速度的过渡效果
  • ease-in -规定缓慢开始的过渡效果
  • ease-out – 规定缓慢结束的过渡效果
  • ease-in-out – 规定开始和结束较慢的过渡效果
  • cubic-bezier(n,n,n,n) – 允许您在三次贝塞尔函数中定义自己的值

延迟过渡效果

transition-delay 属性规定过渡效果的延迟(以秒计)。

动画

这个挺重要的!

https://www.w3school.com.cn/css/css3_animations.asp

动画和过渡的区别:https://zhuanlan.zhihu.com/p/145929287

其主要区别在于:transition需要触发一个事件才会随着时间改变其CSS属性;animation在不需要触发任何事件的情况下,也可以显式的随时间变化来改变元素CSS属性,达到一种动画的效果。

1)动画不需要事件触发,过渡需要。

2)过渡只有一组(两个:开始-结束) 关键帧,动画可以设置多个。

属性 描述
@keyframes 规定动画模式。
animation 设置所有动画属性的简写属性。
animation-delay 规定动画开始的延迟。
animation-direction 定动画是向前播放、向后播放还是交替播放。
animation-duration 规定动画完成一个周期应花费的时间。
animation-fill-mode 规定元素在不播放动画时的样式(在开始前、结束后,或两者同时)。
animation-iteration-count 规定动画应播放的次数。
animation-name 规定 @keyframes 动画的名称。
animation-play-state 规定动画是运行还是暂停。
animation-timing-function 规定动画的速度曲线。

变量

var() 函数用于插入 CSS 变量的值。

var() 函数的语法如下:

var(name, value)
描述
name 必需。变量名(以两条破折号开头)。
value 可选。回退值(在未找到变量时使用)。

**注释:**变量名称必须以两个破折号(–)开头,且区分大小写!

var() 如何工作

首先:CSS 变量可以有全局或局部作用域。

全局变量可以在整个文档中进行访问/使用,而局部变量只能在声明它的选择器内部使用。

如需创建具有全局作用域的变量,请在 :root 选择器中声明它。 :root 选择器匹配文档的根元素。

如需创建具有局部作用域的变量,请在将要使用它的选择器中声明它。

下面的例子与上面的例子相同,但是在这里我们使用 var() 函数。

首先,我们声明两个全局变量(–blue 和 –white)。然后,我们使用 var() 函数稍后在样式表中插入变量的值:

:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

body { background-color: var(--blue); }

h2 { border-bottom: 2px solid var(--blue); }

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}

局部申明

:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

body {
  background-color: var(--blue);
}

h2 {
  border-bottom: 2px solid var(--blue);
}

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  --blue: #0000ff;
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}

在媒体查询中使用变量

https://www.w3school.com.cn/css/css3_variables_mediaqueries.asp

Flexbox

https://www.w3school.com.cn/css/css3_flexbox.asp

在 Flexbox 布局模块(问世)之前,可用的布局模式有以下四种:

  • 块(Block),用于网页中的部分(节)
  • 行内(Inline),用于文本
  • 表,用于二维表数据
  • 定位,用于元素的明确位置

弹性框布局模块,可以更轻松地设计灵活的响应式布局结构,而无需使用浮动或定位。

父元素(容器)

通过将 display 属性设置为 flex,flex 容器将可伸缩:

.flex-container {
  display: flex;
}

以下是 flex 容器属性:

属性 描述
display 规定用于 HTML 元素的盒类型。
flex-direction 规定弹性容器内的弹性项目的方向。
justify-content 当弹性项目没有用到主轴上的所有可用空间时,水平对齐这些项目。
align-items 当弹性项目没有用到主轴上的所有可用空间时,垂直对齐这些项。(垂直对齐)
flex-wrap 规定弹性项目是否应该换行,若一条 flex 线上没有足够的空间容纳它们。
align-content 修改 flex-wrap 属性的行为。与 align-items 相似,但它不对齐弹性项目,而是对齐 flex 线。
flex-flow flex-direction 和 flex-wrap 的简写属性。
order 规定弹性项目相对于同一容器内其余弹性项目的顺序。
align-self 用于弹性项目。覆盖容器的 align-items 属性。
flex flex-grow、flex-shrink 以及 flex-basis 属性的简写属性。

justify-content

center 中心对齐

flex-start :开头对齐

flex-end:末段对齐

space-around:有点两端对齐内味,space-around 值显示行之前、之间和之后带有空格的 flex 项目:

space-between:之间有空格,但是行首和行尾没有空格

完美居中

.flex-container {
  display: flex;
  height: 300px;
  justify-content: center;
  align-items: center;
}

媒体查询

https://www.w3school.com.cn/css/css3_mediaqueries.asp

媒体查询语法

媒体查询由一种媒体类型组成,并可包含一个或多个表达式,这些表达式可以解析为 true 或 false。

@media not|only mediatype and (expressions) {
  CSS-Code;
}

如果指定的媒体类型与正在显示文档的设备类型匹配,并且媒体查询中的所有表达式均为 true,则查询结果为 true。当媒体查询为 true 时,将应用相应的样式表或样式规则,并遵循正常的级联规则。

除非您使用 not 或 only 运算符,否则媒体类型是可选的,且隐含 all 类型。

您还可以针对不同的媒体使用不同的样式表:

<link rel="stylesheet" media="mediatype and|not|only (expressions)" href="print.css">

CSS3 媒体类型

描述
all 用于所有媒体类型设备。
print 用于打印机。
screen 用于计算机屏幕、平板电脑、智能手机等等。
speech 用于大声“读出”页面的屏幕阅读器。

响应式布局

视口:https://www.w3school.com.cn/css/css_rwd_viewport.asp

设置视口

HTML5 引入了一种方法,使 Web 设计者可以通过 <meta> 标签来控制视口。

您应该在所有网页中包含以下 <meta> 视口元素:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

它为浏览器提供了关于如何控制页面尺寸和缩放比例的指令。

width=device-width 部分将页面的宽度设置为跟随设备的屏幕宽度(视设备而定)。

当浏览器首次加载页面时,initial-scale=1.0 部分设置初始缩放级别。

下面分别是不带视口 meta 标签的网页、以及带视口 meta 标签的网页的例子:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇