《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)

news2024/11/23 20:22:43

在这里插入图片描述

文章目录

  • 6.1 使用 CSS 变量进行设计:魔法配方的调配
    • 6.1.1 基础知识
    • 6.1.2 重点案例:创建可定制的主题
    • 6.1.3 拓展案例 1:响应式字体大小
    • 6.1.4 拓展案例 2:使用 CSS 变量创建动态阴影效果
  • 6.2 calc(), min(), max() 等函数的应用:数学魔法的妙用
    • 6.2.1 基础知识
    • 6.2.2 重点案例:响应式容器大小
    • 6.2.3 拓展案例 1:动态字体大小
    • 6.2.4 拓展案例 2:复杂布局中的间距调整
  • 6.3 CSS Blend Modes 和滤镜效果:视觉艺术的魔法
    • 6.3.1 基础知识
    • 6.3.2 重点案例:创建具有混合背景的横幅
    • 6.3.3 拓展案例 1:使用滤镜创建黑白照片效果
    • 6.3.4 拓展案例 2:动态模糊效果

6.1 使用 CSS 变量进行设计:魔法配方的调配

在网页设计的炼金术中,CSS变量是那些能让我们随心所欲调配样式配方的神奇原料。就像在一瓶魔法药水中加入不同的草药会产生不同的效果一样,使用CSS变量可以让我们轻松地在整个网站中统一和修改样式。让我们深入了解这项技术,探索如何将其应用到我们的网页设计中。

6.1.1 基础知识

  • CSS变量定义:CSS变量,也称为“自定义属性”,在根元素(:root)或任何元素上定义,使用--前缀,如 --main-color: #333;
  • CSS变量使用:使用var()函数来引用变量,例如 color: var(--main-color);
  • 作用域:变量可以在定义它们的元素内部及其子元素中使用。在:root中定义的变量可以全局使用。
  • 回退值var()函数允许定义一个回退值,以便在变量未定义时使用,如color: var(--main-color, black);

6.1.2 重点案例:创建可定制的主题

假设你正在设计一个支持暗模式和亮模式的网站,你可以使用CSS变量来轻松切换主题。

  • CSS 样式
:root {
  --background-color: white;
  --text-color: black;
}

[data-theme="dark"] {
  --background-color: black;
  --text-color: white;
}

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

通过简单切换data-theme属性,我们可以在亮模式和暗模式之间切换,无需修改大量CSS代码。

6.1.3 拓展案例 1:响应式字体大小

随着设备屏幕尺寸的变化,我们可能希望字体大小也相应调整,以提升阅读体验。

  • CSS 样式
:root {
  --base-font-size: 16px;
}

@media (max-width: 768px) {
  :root {
    --base-font-size: 14px;
  }
}

body {
  font-size: var(--base-font-size);
}

通过在不同的媒体查询中调整--base-font-size变量,我们可以实现响应式的字体大小调整。

6.1.4 拓展案例 2:使用 CSS 变量创建动态阴影效果

动态阴影效果可以给网页添加一些微妙的交互感。

  • HTML 结构
<div class="dynamic-shadow">悬停我</div>
  • CSS 样式
.dynamic-shadow {
  --shadow-size: 5px;
  box-shadow: var(--shadow-size) var(--shadow-size) 10px #ccc;
  transition: --shadow-size 0.3s ease;
}

.dynamic-shadow:hover {
  --shadow-size: 10px;
}

通过改变--shadow-size变量的值,我们可以在元素悬停时创建一个动态的阴影扩展效果。

通过这些案例,我们可以看到CSS变量在网页设计中的强大作用。它们不仅使主题定制和样式调整变得轻而易举,还可以增强我们网站的交互性和视觉吸引力。掌握了CSS变量的使用,就等于拥有了一瓶能够调配出无数魔法效果的万能药水。继续探索和实验这些“魔法配方”,让你的网站在众多网页中独树一帜吧!

在这里插入图片描述


6.2 calc(), min(), max() 等函数的应用:数学魔法的妙用

在CSS的世界里,calc(), min(), max() 等函数就像是一把能够解决各种布局难题的瑞士军刀。这些函数让我们能够直接在样式表中进行数学计算,从而以一种更灵活和动态的方式来控制元素的大小、位置和间距等。让我们一起探索这些数学魔法的妙用,看看如何将它们应用到实际的网页设计中。

6.2.1 基础知识

  • calc()函数:允许在表达式中执行计算,可以使用加 (+), 减 (-), 乘 (*), 除 (/) 运算符,支持混合使用不同的单位。
  • min()函数:接受一组值作为参数,返回其中的最小值,非常适合用于响应式设计中。
  • max()函数:与min()相反,它返回一组值中的最大值,同样适合用于响应式设计。

6.2.2 重点案例:响应式容器大小

设计一个容器,它的宽度应该适应不同屏幕尺寸,但需要有一个最小和最大宽度限制。

  • CSS 样式
.container {
  width: clamp(300px, 50%, 800px);
}

这里我们使用了clamp()函数,它其实是min()max()的结合体,确保容器的宽度在300px和800px之间,同时宽度会动态地调整为视口宽度的50%。

6.2.3 拓展案例 1:动态字体大小

为了改善在不同设备上的阅读体验,我们希望文字大小能根据视口宽度动态调整,同时有最小和最大字体大小的限制。

  • CSS 样式
.text {
  font-size: clamp(1rem, 2vw + 1rem, 2rem);
}

使用clamp()函数,我们可以让字体大小在1rem和2rem之间动态变化,根据视口宽度自适应,提供更好的阅读体验。

6.2.4 拓展案例 2:复杂布局中的间距调整

假设你有一个复杂的布局,需要根据容器大小动态调整内部元素的间距。

  • CSS 样式
.item {
  margin: calc(5% + 10px);
}

通过calc()函数,我们可以基于容器的宽度百分比加上一个固定的间距值来动态调整元素的外边距,使布局在不同屏幕尺寸下都保持良好的视觉效果。

这些数学函数为CSS提供了前所未有的灵活性和动态性,使得响应式设计和复杂布局调整变得更加简单和直观。通过合理应用calc(), min(), max()等函数,我们可以更精确地控制网页元素的样式,创造出既美观又实用的网页设计。记住,这些工具虽然强大,但使用时也需要考虑到性能和兼容性。现在,让我们拿起数学魔法的工具,为我们的网页设计添上一抹亮色吧!

在这里插入图片描述


6.3 CSS Blend Modes 和滤镜效果:视觉艺术的魔法

在CSS的调色板中,混合模式(Blend Modes)和滤镜(Filters)是那些能够让你的网页从简单的布局转变为视觉艺术品的神奇工具。它们为我们提供了在网页上直接应用复杂视觉效果的能力,无需借助图像编辑软件。让我们深入探索如何使用这些工具来增强你的网站设计。

6.3.1 基础知识

  • 混合模式(Blend Modes):控制两个元素的颜色如何混合显示。常见的混合模式包括 multiply(正片叠底)、screen(滤色)、overlay(叠加)等。
  • 滤镜(Filters):应用于元素上的图形效果,如模糊(blur)、亮度(brightness)、对比度(contrast)等。
  • 应用方式:混合模式通常应用于 background-blend-modemix-blend-mode 属性,滤镜则通过 filter 属性应用。

6.3.2 重点案例:创建具有混合背景的横幅

假设你想设计一个网站横幅,其中包含一张图片和一个半透明的颜色层,通过混合模式增强视觉效果。

  • HTML 结构
<div class="banner">
  <img src="background.jpg" alt="Banner Background">
  <div class="overlay"></div>
</div>
  • CSS 样式
.banner {
  position: relative;
}

.banner img {
  width: 100%;
  height: auto;
}

.overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(255, 0, 0, 0.5);
  mix-blend-mode: multiply;
}

通过设置 .overlaymix-blend-modemultiply,红色半透明层与背景图片混合,创造出丰富的视觉效果。

6.3.3 拓展案例 1:使用滤镜创建黑白照片效果

让网页上的彩色照片以黑白形式展示,增加复古感。

  • CSS 样式
.grayscale-photo {
  filter: grayscale(100%);
}

通过 filter: grayscale(100%);,可以将图片转换为黑白,为网站添加一种复古的视觉风格。

6.3.4 拓展案例 2:动态模糊效果

设计一个动态模糊背景的登录表单,当用户聚焦在输入框时,背景模糊,突出表单内容。

  • HTML 结构
<div class="blur-background">
  <form class="login-form">
    <!-- 表单内容 -->
  </form>
</div>
  • CSS 样式
.blur-background {
  filter: blur(0);
  transition: filter 0.5s ease;
}

.login-form:focus-within ~ .blur-background {
  filter: blur(5px);
}

当表单获得焦点时,.blur-background 应用 blur(5px) 滤镜,使背景模糊,从而聚焦用户的注意力到表单上。

混合模式和滤镜效果为网页设计师提供了强大的视觉表达工具。它们可以用来创造吸引人的视觉效果,增加用户的参与感和情感反应。通过灵活运用这些CSS特性,你的网站可以脱颖而出,为用户提供独一无二的浏览体验。记得,虽然这些工具强大,但在使用时也需要注意不要过度使用,保持网站的专业性和易用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1444984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 基于微信小程序的电子商城购物系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

使用R语言fifer包进行分层采样

使用R语言fifer包中的stratified()函数用来进行分层采样非常方便&#xff0c;但fifer包已经从CRAN存储库中删除&#xff0c;需要从存档中下载可用的历史版本&#xff0c;下载链接&#xff1a;Index of /src/contrib/Archive/fifer (r-project.org)https://cran.r-project.org/s…

架构篇34:深入理解微服务架构 - 银弹 or 焦油坑?

文章目录 微服务与 SOA 的关系微服务的陷阱小结 微服务是近几年非常火热的架构设计理念&#xff0c;大部分人认为是 Martin Fowler 提出了微服务概念&#xff0c;但事实上微服务概念的历史要早得多&#xff0c;也不是 Martin Fowler 创造出来的&#xff0c;Martin 只是将微服务…

Github 2024-02-11 开源项目日报Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-11统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4非开发语言项目2C项目1C项目1Solidity项目1JavaScript项目1Rust项目1HTML项目1 免费服务列表 | f…

KingSCADA实现按钮点击效果

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 在做SCADA项目的时候&#xff0c;按钮是不可缺少的功能&#xff0c;但软件自带的按钮太丑&#xff0c;已经无法满足现如今客户对界面美观度的要求。 这时候就需要UI小姐姐设计美观大气的SCADA界面&#xff0c;但UI设计…

内网安全-内网穿透

目录 内网渗透 Nc使用详解 Nc监听和探测 Nc传文件 termite内网穿透工具 ssh代理内网穿透 ssh配置socket代理 MSF多级网络穿透 内网渗透 Nc使用详解 Nc监听和探测 Nc传文件 termite内网穿透工具 1、termite 之前叫ew &#xff08;可以进行正向连接&#xff0c;可以…

[ai笔记3] ai春晚观后感-谈谈ai与艺术

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第3篇分享&#xff01; 今天我们不聊技术&#xff0c;只聊感受&#xff01; 1 关于ai春晚 期待许久的ai春晚&#xff0c;但是等初一晚上观看的时候&#xff0c;或多或少还是有些失望。 首先是观看人数…

【java】笔记10:类与对象——本章练习

题目1&#xff1a; 代码如下&#xff1a; import java.util.Scanner; public class Input{public static void main(String[]args){Circle cnew Circle();PassObject yuannew PassObject();System.out.println("r""\t""times");yuan.printAreas…

Linux操作系统基础(九):Linux用户与权限

文章目录 Linux用户与权限 一、文件权限概述 二、终端命令&#xff1a;组管理 三、终端命令&#xff1a;用户管理 1、创建用户 、 设置密码 、删除用户 2、查看用户信息 3、su切换用户 4、sudo 4.1、给指定用户授予权限 4.2、使用 用户 zhangsan登录, 操作管理员命令…

HTTP网络通信协议基础

目录 前言&#xff1a; 1.HTTP协议理论 1.1协议概念 1.2工作原理 2.HTTP抓包工具 2.1Fiddler工具 2.2抓包原理 3.HTTP协议格式 3.1HTTP请求 3.2HTTP响应 3.3格式总结 前言&#xff1a; 在了解完网络编程的传输层UDP和TCP通信协议后&#xff0c;就需要开始对数据进行…

Netty应用(六) 之 异步 Channel

目录 12.Netty异步的相关概念 12.1 异步编程的概念 12.2 方式1&#xff1a;主线程阻塞&#xff0c;等待异步线程完成调用&#xff0c;然后主线程发起请求IO 12.3 方式2&#xff1a;主线程注册异步线程&#xff0c;异步线程去回调发起请求IO 12.4 细节注释 12.5 异步的好处…

【Android】使用Android Studio运行Hello World项目

文章目录 1. JDK的安装与配置2. Android Studio的安装3. 运行Hello World项目3.1 新建项目3.2 修改项目配置3.2.1 修改UI界面3.2.2 配置 Android SDK 3.3 添加并运行虚拟设备3.4 运行项目 1. JDK的安装与配置 想要使用Android Studio&#xff0c;必须先配置Java环境&#xff0…

机器学习之监督学习和非监督学习

监督学习(Supervised Learning)监督学习是一种学习方式&#xff0c;其中模型从标记的训练数据中学习。这意味着每个训练样本都是由输入向量和相应的目标输出(也称为标签)组成的。模型的任务是学习输入到输出的映射函数&#xff0c;以便当提供新的、未见过的数据时&#xff0c;模…

MyBatis中#和$符的区别,sql注入问题,动态sql语句

MyBatis中#{}和${}的区别 #{}和${}都是MyBatis提供的sql参数替换。区别是&#xff1a;#{}是预编译处理&#xff0c;${}是字符串直接替换。#{}可以防止SQL注入&#xff0c;${}存在SQL注入的风险&#xff0c;例如 “ or 11”虽然存在SQL注入风险&#xff0c;但也有自己的适用场…

CSS Selector—选择方法,和html自动——异步社区的爬取(动态网页)——爬虫(get和post的区别)

这里先说一下GET请求和POST请求&#xff1a; post我们平时是要加data的也就是信息&#xff0c;你会发现我们平时百度之类的 搜索都是post请求 get我们带的是params&#xff0c;是发送我们指定的内容。 要注意是get和post请求&#xff01;&#xff01;&#xff01; 先说一下异…

python基于flask的网上订餐系统769b9-django+vue

课题主要分为两大模块&#xff1a;即管理员模块和用户模块&#xff0c;主要功能包括个人中心、用户管理、菜品类型管理、菜品信息管理、留言反馈、在线交流、系统管理、订单管理等&#xff1b; 如果用户想要交换信息&#xff0c;他们需要满足双方交换信息的需要。由于时间有限…

2.10日学习打卡----初学RocketMQ(一)

2.10日学习打卡 对于MQ(Message queue)消息队列的一些解释可以看我原来写的文章 初学RabbitMQ 各大MQ产品比较 一.RocketMQ概述 发展历程 RocketMQ概念术语 生产者和消费者 生产者负责生产消息&#xff0c;一般由业务系统负责生产消息&#xff0c;消费者即后台系统&…

算法-3-基本的数据结构

单双链表 1.单链表双链表如何反转 import java.util.ArrayList; import java.util.List;public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {public int…

C/C++模板初阶

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.1 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int&…

微软和苏黎世联邦理工学院开源SliceGPT创新压缩技术节省大量部署资源;OpenAI成立儿童安全团队,防AI误用

&#x1f989; AI新闻 &#x1f680; 微软和苏黎世联邦理工学院开源SliceGPT创新压缩技术节省大量部署资源 摘要&#xff1a;微软和苏黎世联邦理工学院研究人员开源了SliceGPT&#xff0c;通过对大模型的权重矩阵进行压缩切片&#xff0c;实现了模型紧缩&#xff0c;节省了部…