5 个你不知道的隐藏 CSS 属性

news2024/11/17 3:34:32

层叠样式表 (CSS) 是网页设计的骨架,它可以帮助我们轻松的设置网页的样式和格式。虽然大多数的 CSS 属性,例如颜色、字体大小和边距都被大家熟知,但还有许多鲜为人知的属性可以帮助我们设计添加功能。在这篇文章中,我们将介绍 5 个我们可能从未听说过的 CSS 属性,但它们可以更好的帮助我们开发网页项目。

1. text-decoration

text-decoration除了经典的下划线 (text-decoration: underline) 之外,我们还可以给 text-decoration 属性添加更多样式。它支持三个参数:

  • 线条的宽度 (width)
  • 线条的类型 (style) - 例如实线 (solid)、点线 (dotted) 等
  • 线条的颜色 (color)

下面的代码就可以让悬停的链接呈现绿色双线底线效果:

.menu__list-link:hover {
  text-decoration: underline 2px solid green;
}

image.png

2. 文本下划线偏移 (text-underline-offset)

text-underline-offset 属性可以解决一个我们常见的问题:就是当文本中某些字母的下划线被字母本身的一部分遮挡时,这个属性可以让下划线相对于文本内容进行偏移。

下面代码就可以让链接悬停时下划线距离文本内容 6 像素:

.menu__list-link:hover {
  text-decoration: underline 2px solid green;
  text-underline-offset: 6px;
}

image.png

image.png

3. 内嵌 (inset)

对于使用相对定位 (relative) 或绝对定位 (absolute) 等属性的元素,我们可以使用 inset 属性简写设置其上、右、下、左的内边距:

/* 原始写法 */
top: 5px;
right: 3px;
bottom: 1px;
left: 4px;

/* 简写形式 */
inset: 5px 3px 1px 4px;

4. 对象定位 (object-position)

我们经常使用 object-fit: cover 属性来让图像适应容器的宽高并保持清晰。但是,我们无法控制图像被裁切的具体部分。这时,我们就可以使用 object-position 属性来帮助我们指定裁切的位置。

image.png

以下代码可以让图像底部对齐容器:

.test {
  height: 350px;
  width: 500px;
  object-fit: cover;
  object-position: bottom;
}

image.png

object-position: top;

image.png

我们还可以使用 topleftright 属性来指定顶部、左侧或右侧对齐。

我们还可以使用两个参数来更精确地控制裁切位置,例如 object-position: center bottom; 将图像的中心对齐容器底部。

    • top: 将图像或视频的顶部对齐容器顶部
    • center: 将图像或视频的中心对齐容器中心
    • bottom: 将图像或视频的底部对齐容器底部
    • left: 将图像或视频的左侧对齐容器左侧
    • right: 将图像或视频的右侧对齐容器右侧
    • top left: 将图像或视频的顶部左侧对齐容器的顶部左侧
    • top center: 将图像或视频的顶部中心对齐容器的顶部中心
    • top right: 将图像或视频的顶部右侧对齐容器的顶部右侧
    • center left: 将图像或视频的中心左侧对齐容器的中心左侧
    • center center: 将图像或视频的中心对齐容器的中心中心
    • center right: 将图像或视频的中心右侧对齐容器的中心右侧
    • bottom left: 将图像或视频的底部左侧对齐容器的底部左侧
    • bottom center: 将图像或视频的底部中心对齐容器的底部中心
    • bottom right: 将图像或视频的底部右侧对齐容器的底部右侧
  • 百分比值:

    • x%: 将图像或视频的水平位置设置为容器宽度的 x%
    • y%: 将图像或视频的垂直位置设置为容器高度的 y%
  • 长度值:

    • xpx: 将图像或视频的水平位置设置为距离容器左侧 x 像素
    • ypx: 将图像或视频的垂直位置设置为距离容器顶部 y 像素
  • 计算值:

    • calc(x%): 与 x% 相同
    • calc(y%): 与 y% 相同
    • calc(xpx): 与 xpx 相同
    • calc(ypx): 与 ypx 相同
.image {
  width: 200px;
  height: 150px;
  background-image: url('image.jpg');
  object-fit: cover; /* Cover the container without cropping */
}

/* 将图像的顶部对齐容器顶部 */
.image.top {
  object-position: top;
}

/* 将图像的中心对齐容器中心 */
.image.center {
  object-position: center;
}

/* 将图像的底部对齐容器底部 */
.image.bottom {
  object-position: bottom;
}

/* 将图像的左侧对齐容器左侧 */
.image.left {
  object-position: left;
}

/* 将图像的右侧对齐容器右侧 */
.image.right {
  object-position: right;
}

/* 将图像的顶部左侧对齐容器的顶部左侧 */
.image.top-left {
  object-position: top left;
}

/* 将图像的顶部中心对齐容器的顶部中心 */
.image.top-center {
  object-position: top center;
}

/* 将图像的顶部右侧对齐容器的顶部右侧 */
.image.top-right {
  object-position: top right;
}

/* 将图像的中心左侧对齐容器的中心左侧 */
.image.center-left {
  object-position: center left;
}

/* 将图像的中心对齐容器的中心中心 */
.image.center-center {
  object-position: center center;
}

/* 将图像的中心右侧对齐容器的中心右侧 */
.image.center-right {
  object-position: center right;
}

/* 将图像的底部左侧对齐容器的底部左侧 */
.image.bottom-left {
  object-position: bottom left;
}

/* 将图像的底部中心对齐容器的底部中心 */
.image.bottom-center {
  object-position: bottom center;
}

/* 将图像的底部右侧对齐容器的底部右侧 */
.image.bottom-right {
  object-position: bottom right;
}

/* 将图像的水平位置设置为容器宽度的 25%

5.scroll-margin-top (滚动的顶边距)

image.png

默认情况下,当我们点击页面上的锚链接 (例如 <a href="#fairy-tale__inner">行程</a>) 时,浏览器会滚动到该元素的顶端。但是,如果我们想在滚动后元素顶部预留一些空隙,就可以使用 scroll-margin-top 属性。

例如,以下代码可以让链接点击后,在滚动到 “#fairy-tale__inner” 元素时,该元素距离浏览器窗口顶部预留 100 像素的空白:

#fairy-tale__inner {
  scroll-margin-top: 100px;
}

image.png

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

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

相关文章

数据结构与算法笔记:基础篇 - 红黑树(上):为什么工程中都用红黑树这种二叉树?

概述 上两篇文章&#xff0c;我们依次讲解了树、二叉树、二叉查找树。二叉查找树是最常用的一种二叉树&#xff0c;它支持快速插入、删除、查找操作&#xff0c;各个操作的时间复杂度跟树的高度成正比&#xff0c;理想情况下&#xff0c;时间复杂度是 O ( l o g n ) O(logn) …

【PL理论】(16) 形式化语义:语义树 | <Φ, S> ⇒ M | 形式化语义 | 为什么需要形式化语义 | 事实:部分编程语言的设计者并不会形式化语义

&#x1f4ad; 写在前面&#xff1a;本章我们将继续探讨形式化语义&#xff0c;讲解语义树&#xff0c;然后我们将讨论“为什么需要形式化语义”&#xff0c;以及讲述一个比较有趣的事实&#xff08;大部分编程语言设计者其实并不会形式化语义的定义&#xff09;。 目录 0x00…

第十四周 6.4 内部类部分知识点

一、理解 1.定义在一个类内部的类称为内部类 2.语法: class 类名{ class 类名{} } 3.内部类编译之后生成独立的.class文件&#xff0c;文件命名为:外部类类名$内部类的类名.class 4.内部类分类:成员内部类、静…

插卡式仪器模块:波形发生模块(插入式)

• 16 位分辨率 • 125 MHz 刷新率 • 支持生成 FSK/ASK 信号 • 生成任意标准波形或用户自定义波形 • 在特殊协议通信中模拟某个波形 • 无线充电&#xff08;信号调制&#xff09; 通道11输出阻抗Low-ZLow-Z输出范围 5 V 5 V耦合DCDC带宽4 MHz10 MHzADC 分辨率16 Bits1…

字符串常量池字符串常量的几种创建方式及其位置

从JDK7开始&#xff0c;字符串常量池被移到了堆区中&#xff0c;因此Java程序中的字符串常量对象要么在堆区的字符串常量池之中&#xff0c;要么在堆区的字符串常量池之外。为了做区分&#xff0c;下文将堆区的字符串常量池区域称为字符串常量池&#xff0c;将堆区字符串常量池…

汇编语言作业(六)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、实验总结 一、实验目的 掌握加减法运算指令对各状态标志位的影响及测试方法掌握汇编语言长整数的加法的操作方法 二、实验内容 对于以下几组数&#xff0c; 087H和034H 0C2H和5FH 0F3H和0F3H&am…

6.7 作业

搭建一个货币的场景&#xff0c;创建一个名为 RMB 的类&#xff0c;该类具有整型私有成员变量 yuan&#xff08;元&#xff09;、jiao&#xff08;角&#xff09;和 fen&#xff08;分&#xff09;&#xff0c;并且具有以下功能&#xff1a; (1)重载算术运算符 和 -&#xff…

kettle从入门到精通 第六十七课 ETL之kettle 再谈kettle阻塞,阻塞多个分支的多个步骤

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群&#xff0c;一起学习&#xff0c;共同进步。由于群内人员较多无法直接扫描进入&#xff0c;公众号后台加我微信入群&#xff0c;备注kettle。 场景&#xff1a;ETL沟通交流群内有小伙伴反馈&#xff0c;如何多个分支处理完…

C# 解决 Excel 自动适应列宽的问题

目录 问题现象 原因分析 范例运行环境 解决问题 生成测试文本 实现自适应 小结 问题现象 通过 COM 操作 Excel 自动适应列宽的方法是 AutoFit 方法&#xff0c;该方法适于自动适应列宽或行高。 最近在我们的一款应用里发现效果并没有符合预期&#xff0c;我们提供了一…

vAttention:用于在没有Paged Attention的情况下Serving LLM

文章目录 0x0. 前言&#xff08;太长不看版&#xff09;0x1. 摘要0x2. 介绍&背景0x3. 使用PagedAttention模型的问题0x3.1 需要重写注意力kernel0x3.2 在服务框架中增加冗余0x3.3 性能开销0x3.3.1 GPU上的运行时开销0x3.3.2 CPU上的运行时开销 0x4. 对LLM服务系统的洞察0x5…

VUE2.7项目配置webpack打包-详细操作步骤

一、Webpack简介 Webpack是一个打包工具&#xff0c;可以把JS、CSS、Node Module、Coffeescrip、SCSS/LESS、图片等都打包在一起&#xff0c;因此&#xff0c;现在几乎所有的SPA项目、JS项目都会用到Webpack。 官网&#xff1a;https://webpack.js.org GitHub为https://git…

全球溃败,苹果可能要全球大降价了,试图摆脱中国制造的后果

苹果一季度在中国市场的出货量暴跌&#xff0c;导致它不得不在中国市场大降价&#xff0c;从3月份就在中国市场大幅度降价&#xff0c;然而目前它在美国和欧洲两大市场也出现大幅衰退&#xff0c;降价可能将成为苹果在全球的举措。 市调机构Canalys公布的一季度数据显示&#x…

MySQL高性能(SQL性能分析)

MySQL性能系列 SQL性能分析 前言1.SQL执行评率2. 慢查询日志3. profile详情4. Explain执行计划4.1. Explain — id4.2. Explain — type4.3. Explain — table4.4. Explain — key 前言 本篇文章采用的MySQL版本是8代&#xff0c;同时自己使用的是Linux mysql8&#xff0c;本篇…

SOA的设计模式_3.微服务模式

SOA的架构中&#xff0c;复杂的ESB企业服务总线依然处于非常重要的位置&#xff0c;整个系统的架构并没有实现完全的组件化以及面向服务&#xff0c;它的学习和使用门槛依然偏高。而微服务不再强调传统SOA架构里面比较重的ESB企业服务总线&#xff0c;同时SOA的思想进入到单个业…

多态的应用——数组多态

介绍 ai查询 在Java中&#xff0c;动态数组通常通过ArrayList类来实现&#xff0c;它是Java集合框架&#xff08;Java Collections Framework&#xff09;的一部分。ArrayList是一个可调整大小的数组实现&#xff0c;提供了比标准数组更多的灵活性和功能。 以下是使用ArrayLis…

安装后或升级启智环境到飞桨2.6版本(develop)

启智社区的启智大脑调试环境非常好用&#xff0c;但是里面的飞桨环境版本比较低&#xff0c;为了能够运行大模型&#xff08;llm&#xff09;&#xff0c;需要升级飞桨到2.6版本或者开发版本。 首先创建启智大脑调试环境&#xff0c;注意选cuda12.1的环境。 进入调试环境后&am…

Discuz! X3.4免备案无执照接入支付宝微信支付插件

下载地址&#xff1a;Discuz! X3.4免备案无执照接入支付宝微信支付插件 [充值会员]支付宝当面付版 微信支付

MySQL普通表转换为分区表实战指南

码到三十五 &#xff1a; 个人主页 引言 本文将详细指导新手开发者如何将MySQL中的普通表转换为分区表。分区表在处理庞大数据集时展现出显著的性能优势&#xff0c;不仅能大幅提升查询速度&#xff0c;还能有效简化数据维护工作。通过掌握这一技巧能够更好地应对数据密集型应…

简单聊一下Oracle,MySQL,postgresql三种锁表的机制,行锁和表锁

MySQL&#xff1a; MySQL使用行级锁定和表级锁定。行级锁定允许多个会话同时写入表&#xff0c;适用于多用户、高并发和OLTP应用。表级锁定只允许一个会话一次更新表&#xff0c;适用于只读、主要读取或单用户应用。 比如mysql开启一个窗口执行 begin; update xc_county_a…

【C++初阶学习】第十三弹——优先级队列及容器适配器

C语言栈&#xff1a;数据结构——栈(C语言版)-CSDN博客 C语言队列&#xff1a;数据结构——队列&#xff08;C语言版&#xff09;-CSDN博客 C栈与队列&#xff1a;【C初阶学习】第十二弹——stack和queue的介绍和使用-CSDN博客 前言&#xff1a; 在前面&#xff0c;我们已经…