CSS 背景、阴影和混合模式

server/2024/12/2 5:32:34/

网站的好坏在于细节,在实现页面里某个组件的布局并写完样式之后,不要急着继续,有意识地训练自己,以挑剔的眼光审视刚刚完成的代码。

1 背景与渐变

background-image

指定文件或者生成的颜色渐变为背景图片。

background-origin

用于确定背景相对于元素的边框盒、内边框盒(初始值)或内容盒子来定位。

图 background-origin 的三个值效果

background-clip

指定背景是否应该填充边框盒(初始值)、内边距框盒或内容盒。

图 background-clip 的三个值效果

background-position

设置背景图的初始位置。

background-size

指定元素内背景图片的渲染尺寸。使用百分位的时候,根据background-origin 指定的位置来确定其元素内容大小。例如,上面background-origin的三个效果值中,指定的background-size 都为100%。

background-repeat

决定在需要填充整个元素时,是否平铺图片。

background-attachment

指定背景图片是随着元素上下滚动(初始值),还是固定在视口区域。(使用fixed值会对页面性能产生负面影响。)

fixed: 固定在视口区域,此时背景的background-origin 参照的是视口。

scroll: 随着元素滚动。如果该元素允许滚动(overflow: auto),那么背景也不会滚动。

local: 随着元素滚动,如果该元素允许滚动,那么背景也会跟着滚动。

图 background-attachment 的三个值效果

background-color

指定纯色背景,渲染到背景图片下方。

表 background属性的组成

1.1 渐变

background-image 可以接受一个渐变函数。

图 渐变函数

1.1.1 渐变角度

linear-gradient 的第一个参数用于定义渐变的角度。 可以使用to top、to bottom、to bottom right。也可以使用更准确的单位。0deg 表示垂直向上,更大值会沿着顺时针变化,因此90deg 代表向右渐变(to right),180deg 表示to bottom。

rad

弧度,一个完整的圆是2π。

turn

环绕圆周的圈数。1 turn = 360deg。

grad

百分度。100 grad 相当于 90 deg(度).

表 指定渐变方向的其他单位

图 渐变角度与方向的变化

1.1.2 多个颜色节点

一个渐变可以接受任意数量的颜色节点,节点之间通过逗号分隔。如果不知道这些节点的位置,则会自动均匀平铺这些颜色节点。节点位置可以通过百分号或者px来指定,跟在颜色值后面,空格符隔开。

图 多个颜色节点实现条纹

1.1.3 重复渐变

对于重复渐变,最好使用特定长度而不是百分比。

图 重复渐变

1.1.4 径向渐变

线性渐变是从元素的一端开始,沿着直线过度到另一端,而径向渐变不同,它是从一个点开始,全方位向外扩张。

图 径向渐变的例子

2 阴影

阴影是一种可以为网页增加立体感的特效。 有两个属性可以创建阴影,box-shadow 可以为元素盒子生成阴影,text-shadow 可以为渲染后的文字生成阴影。

默认情况下,阴影与元素的大小和尺寸相同。如果元素设置了border-radius,那么阴影相应地也会有圆角。阴影的水平偏移量(x)、垂直偏移量(y)和颜色都不可或缺。还有两个值是可选的:模糊半径和扩展半径。

box-shadow: Xpx Ypx 模糊半径px 扩展半径px color;

而text-shadow 只有4个参数(模糊半径可选)。没有扩展半径这个参数。

图 阴影效果

2.1 拟物化设计与扁平化设计

拟物化设计:把屏幕上的元素设计得如同真实世界的实物。追求尽量贴近真实世界。

扁平化设计: 扁平化设计选择接受现代社会已经日益数字化的事实。扁平化设计讲究色彩明快统一、外观简洁明了,这就意味着尽量少用渐变、阴影和圆角。

中庸设计: 介于扁平化设计与拟物化设计之间。

图 三种不同的设计效果

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div class="container"><div class="con"><button class="btn">Sign up now</button><div>拟物化</div></div><div class="con"><button class="btn">Sign up now</button><div>扁平化</div></div><div class="con"><button class="btn">Sign up now</button><div>中庸</div></div>
</div>
</body>
</html>
<style>.container {display: flex;padding-top: 30px;}.con {margin-left: 40px;text-align: center;}.btn {padding: 1em;border: 0;font-size: 0.8rem;color: white;border-radius: 0.5em;margin-bottom: 15px;}.con:nth-child(1) .btn {background-image: linear-gradient(to bottom,#57b,#148);box-shadow: 0.1em 0.1em 0.5em #124;}.con:nth-child(1) .btn:active {box-shadow: inset 0 0 0.5em #124,inset 0 0.5em 1em rgba(0,0,0,0.4);}.con:nth-child(2) .btn {background-color: #57b;box-shadow: 0 0.2em 0.2em rgba(0,0,0,0.15);}.con:nth-child(2) .btn:hover {background-color: #456ab6;}.con:nth-child(2) .btn:active {background-color: #148;}.con:nth-child(3) .btn {background-color: #57b;box-shadow: 0 0.4em #148;text-shadow: 1px 1px #148;}.con:nth-child(3) .btn:active {background-color: #456ab6;transform: translateY(0.1em);box-shadow: 0 0.3em #148;}</style>

3 混合模式

混合模式用来控制叠放的图片怎样融合在一起。

变暗

multiply

前景色越亮,后景色显示出来的越多。

darken

选择两个颜色中较暗的那个。

color-burn

加深背景色,增加对比度。

变亮

screen

前景色越暗,背景色显示出来的越多。

lighten

选择两个颜色中较亮的那个

color-dodge

加亮背景色,降低对比度。

对比

overlay

对暗色使用multiply,对亮色使用screen,以增加对比度,对比效果较柔和。

hard-light

大幅度增加对比度,有点像叠加,但是使用加强版multiply或者screen,对比效果明显。

soft-light

有点类似hard-light,但是使用burn/dodge代替multiply/screen。

复合

Hue

将上层颜色的色相混合到下层颜色上。

saturation

将上层颜色的饱和度复合到下层颜色上。

luminosity

将上层颜色的明度混合到下层颜色上。

color

将上层颜色的色相和饱和度混合到下层颜色上。

比较

difference

从亮色中减去暗色。

exclusion

类似于difference,但对比度稍弱。

表 混合模式的五大类

图 15种混合模式效果

3.1 实际应用

混合模式实际应用有:

  1. 使用某种颜色或渐变为图片着色。
  2. 为图片增加纹理效果,比如划痕或者老胶片放映时的颗粒感等。
  3. 缓和、加深或减小图片的对比度,使图片上的文字更具可读性。
  4. 在图片上覆盖一条文字条幅,但是还是想让图片完整显示。

图 纹理效果

3.1.1 融合混合模式

background-blend-mode属性只能局限于元素的背景使用。mix-blend-mode可以融合多个元素。

图 融合混合模式效果

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div class="blend"><h1>融合混合模式</h1>
</div>
</body>
</html>
<style>.blend {background-image: url("../asset/animal1.jpeg");background-size: 100%;width: 200px;height: 200px;display: flex;align-items: center;}.blend > h1 {margin: 0;font-size: 2rem;text-align: center;mix-blend-mode: hard-light;background-color: #c33;color: #808080;border: 0.1em solid #ccc;}
</style>

http://www.ppmy.cn/server/146622.html

相关文章

【面试题】2025年百度校招Java后端面试题

文章目录 前言一、网络IO1、服务器处理并发请求有哪几种方式&#xff1f;2、说一下select&#xff0c;poll&#xff0c;epoll的区别&#xff1f;3、Java 有一种现代的处理方式&#xff0c;属于异步I/O&#xff0c;是什么&#xff1f;redis&#xff0c;nginx&#xff0c;netty 是…

Qt—QLabel 使用总结

参考链接:Qt—QLabel 使用总结 一、简述 QLabel(标签控件) 提供了一个文本或图像的显示,没有提供用户交互功能。 一个 QLabel 可以包含以下任意内容类型: -纯文本:使用 setText() 设置一个 QString 富文本:使用 setText() 设置一个富文本的 QString图像:使用 setPixma…

探索光耦:晶体管光耦——提升稳定性与安全性,推动能源效率革命

随着电子技术的飞速发展&#xff0c;开关电源&#xff08;Switching Power Supply, SPS&#xff09;已成为现代电子设备中不可或缺的核心组件。它广泛应用于计算机、通信设备、家电、电动工具等各种领域。开关电源因其高效率、体积小、重量轻而受到青睐。然而&#xff0c;由于开…

Cobalt Strike 4.8 用户指南-第十一节 C2扩展

11.1、概述 Beacon 的 HTTP 指标由 Malleable Command and Control &#xff08;Malleable C2&#xff09; 配置文件控制。Malleable C2 配置文件是一个简单的程序&#xff0c;它指定如何转换数据并将其存储在事务中。转换和存储数据的同一程序&#xff08;向后解释&#xff0…

【Vue3】main.js

【Vue3】main.js 创建Vue应用实例引入并配置路由配置状态管理挂载应用全局属性与方法使用其他插件 在Vue 3项目中&#xff0c;main.js 文件是整个应用的入口点。 它负责初始化Vue实例、配置全局选项、注册全局组件、引入插件以及挂载Vue实例到DOM上。 通过 main.js&#xff0c;…

详解八大排序(一)------(插入排序,选择排序,冒泡排序,希尔排序)

文章目录 前言1.插入排序&#xff08;InsertSort&#xff09;1.1 核心思路1.2 实现代码 2.选择排序&#xff08;SelectSort&#xff09;2.1 核心思路2.2 实现代码 3.冒泡排序&#xff08;BubbleSort&#xff09;3.1 核心思路3.2 实现代码 4.希尔排序&#xff08;ShellSort&…

【Vue3】App.vue

【Vue3】App.vue App.vue 是 Vue 3 项目中的一个核心文件&#xff0c;它作为整个应用的入口组件&#xff0c;是所有其他页面和组件的基础。 在 Vue 项目中&#xff0c;App.vue 文件起到了非常关键的作用&#xff0c;它负责组织和渲染整个应用程序的结构。 下面我们来深入解读 A…

【算法】欧几里得与拓展欧几里得算法

目录 一、欧几里得算法 二、拓展欧几里得算法 2.1 裴蜀定理 2.2 拓展欧几里得算法 2.3 例题 三、线性同余方程 3.1 概念 3.2 例题 一、欧几里得算法 欧几里得算法又称辗转相除法&#xff0c;可用于求解两个数的最大公约数 其思路&#xff1a; gcd(a, b) gcd(b, a%b…