当前位置: 首页 > news >正文

CSS 背景、阴影和混合模式

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

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>

相关文章:

CSS 背景、阴影和混合模式

网站的好坏在于细节&#xff0c;在实现页面里某个组件的布局并写完样式之后&#xff0c;不要急着继续&#xff0c;有意识地训练自己&#xff0c;以挑剔的眼光审视刚刚完成的代码。 1 背景与渐变 background-image 指定文件或者生成的颜色渐变为背景图片。 background-origin…...

第49届ICPC亚洲区域赛,非凸科技再次支持上海赛站

11月16日-17日&#xff0c;第49届ICPC国际大学生程序设计竞赛亚洲区域赛上海站在上海大学宝山校区成功举办&#xff0c;来自全国各地222所高校、中学、企业的352支参赛队伍同台竞技。非凸科技高度重视ICPC竞赛&#xff0c;再次荣膺上海赛站合作伙伴&#xff0c;共同推动全球信息…...

良好的并发编程习惯之封闭(Confinement)

创作内容丰富的干货文章很费心力&#xff0c;感谢点过此文章的读者&#xff0c;点一个关注鼓励一下作者&#xff0c;激励他分享更多的精彩好文&#xff0c;谢谢大家&#xff01; “共享可变状态”有两个要点&#xff1a;“共享”和“可变”。封闭的策略是&#xff1a;不共享就完…...

docker镜像、容器、仓库介绍

docker docker介绍docker镜像命令docker容器命令docker仓库 docker介绍 官网 Docker 是一种开源的容器化平台&#xff0c;用于开发、部署和运行应用。它通过将应用程序及其依赖项打包到称为“容器”的单一包中&#xff0c;使得应用能够在任何环境下运行&#xff0c;不受底层系…...

写个添加球队和展示球队的功能--laravel与inertia

先展示下最终效果,如下是展示球队的界面 如下是添加球队的界面 界面样式没怎么调整,不要在意这些细节。先说说操作流程 首先需要登录,没注册就注册一个账号。登录界面就不展示了。然后选中”NbaBasketballTeams“这个选项,就进入了展示球队的界面。然后点击…...

自制Windows系统(十)

上图 &#xff08;真的不是Windows破解版&#xff09; 开源地址&#xff1a;仿Windows...

World of Warcraft /script SetRaidTarget(“target“, n, ““) n=8,7,6,5,4,3,2,1,0

魔兽世界执行当前目标标记方法 /script SetRaidTarget("target", n, "") n8,7,6,5,4,3,2,1,0 解析这个lua脚本 D:\Battle.net\World of Warcraft\_classic_\Interface\AddOns\wMarker wMarker.lua /script SetRaidTarget("target", 8, &quo…...

Rust中Tracing 应用指南

欢迎来到这篇全面的Rust跟踪入门指南。Rust 的tracing是一个用于应用程序级别的诊断和调试的库。它提供了一种结构化的、异步感知的方式来记录日志和跟踪事件。与传统的日志记录相比&#xff0c;tracing能够更好地处理复杂的异步系统和分布式系统中的事件跟踪&#xff0c;帮助开…...

海外媒体发稿:根据您的要求编写二十个文案标题方法-华媒舍

本文旨在科普解读并描述标题中所包含的二十个爆款文案&#xff0c;为读者提供更深入的了解和知识。通过对每个标题进行拆解描述&#xff0c;我们将深入探讨各个文案标题的背后含义和吸引人之处。 1、"10个你不可忽视的秘密技巧&#xff0c;提升你的生活品质&#xff01;&q…...

gitlab:使用脚本批量下载项目,实现全项目检索

目的 当需要知道gitlab中所有项目是否存在某段代码时&#xff0c;gitlab免费版只提供了当个项目内的检索&#xff0c;当项目过多时一个个查太过繁琐。下面通过 GitLab API 将指定 Group 下的所有项目克隆到本地。此脚本会自动获取项目列表并逐一克隆它们&#xff0c;再在本地进…...

macos 使用 nvm 管理 node 并自定义安装目录

系统环境&#xff1a;MacOS Version 参考文章&#xff1a; Github 地址&#xff1a;https://github.com/nvm-sh/nvm 安装的方式是很简单的&#xff0c;直接执行下面的命令即可&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bas…...

网络编程第一课

0voice第一课 https://github.com/0voice 今日学习&#xff1a;网络通信IO 网络通信的核心是通过系统提供的socket套接字实现的。socket和c语言中文件操作的本质类似&#xff0c;在c语言中&#xff0c;通过fopen、fclose、fread、fwrite实现了对文件的操作&#xff0c;socket…...

玩转 Burp Suite (1)

内容预览 ≧∀≦ゞ 玩转 Burp Suite (1)声明Burp Suite 简介Dashboard&#xff08;仪表盘&#xff09;1. 默认任务管理2. 暂停任务3. 新建扫描任务4. 使用总结 Target&#xff08;目标&#xff09;1. SIte Map &#xff08;站点地图&#xff09;2. Scope&#xff08;范围&#…...

【linux】(16)date命令

基本用法 date [OPTION]... [FORMAT]显示当前日期和时间 默认情况下&#xff0c;date 命令显示当前的日期和时间&#xff1a; date输出示例&#xff1a; Sun Jun 2 10:29:08 UTC 2024自定义日期和时间格式 可以使用 FORMAT 选项自定义输出格式。常用的格式选项包括&#…...

算法笔记:并查集

一、什么是并查集 并查集的逻辑结构是一个包含N个元素的集合&#xff0c;如图&#xff1a; 我们将各个元素划分为若干个互不相交的子集&#xff0c;如图&#xff1a; 二、并查集的基本操作 &#xff08;一&#xff09;初始化 初始化可以先将每个子集指向自己 //初始化int []…...

密码系统设计实验3-2

文章目录 《密码系统设计》实验实验项目实验三 密码模块实现4-6 学时实践要求&#xff08;30 分&#xff09; 《密码系统设计》实验 实验项目 实验序号实验名称实验学时数实验目的实验内容实验类型学生学习预期成果实验三密码模块实现6基于商用密码标准的密码模块的实现实现简…...

Spring Boot 与 Spring Cloud Alibaba 版本兼容对照

版本选择要点 Spring Boot 3.x 与 Spring Cloud Alibaba 2022.0.x Spring Boot 3.x 基于 Jakarta EE&#xff0c;javax.* 更换为 jakarta.*。 需要使用 Spring Cloud 2022.0.x 和 Spring Cloud Alibaba 2022.0.x。 Alibaba 2022.0.x 对 Spring Boot 3.x 的支持在其发行说明中…...

SVD 奇异值分解

SVD 是一种矩阵分解和降维的算法&#xff0c;通过分解矩阵找到奇异值&#xff0c;奇异值越大代表特征越重要。公式如下 A U Σ V T A U \Sigma V^T AUΣVT U : 左矩阵 ( m \times m ) Σ \Sigma Σ: 对角奇异值矩阵V&#xff1a;右矩阵( n \times n ) Sklearn 实现 S…...

C++设计模式-享元模式

动机(Motivation) 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中&#xff0c;从而带来很高的运行时代价——主要指内存需求方面的代价。如何在避免大量细粒度对象问题的同时&#xff0c;让外部客户程序仍然能够透明地使用面向对象的方式来进行操作…...

AI加持,华为全屋智能品牌升级为“鸿蒙智家”

1.传统智能家居的困境&#xff1a;从便利到繁琐 近年来&#xff0c;智能家居因其便捷性和科技感受到消费者的青睐。然而&#xff0c;随着用户需求的多样化&#xff0c;传统智能家居的弊端逐渐显现&#xff1a; 设备连接复杂&#xff0c;品牌间兼容性不足&#xff0c;用户不得不…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...