页面制作的15个CSS技巧

简介: 本文跟大家分享一些在技术文档中很少提到的CSS属性和值,但是,在我看来,对于提高web界面开发的速度和质量特别有帮助。文章中涉及的很多特性都是实验性质的,现代浏览器基本支持了大部分了,如果在使用下面提到的属性的时候又需要兼容主流浏览器的时候,可以先查看一下Can I use。

本文跟大家分享一些在技术文档中很少提到的CSS属性和值,但是,在我看来,对于提高web界面开发的速度和质量特别有帮助。文章中涉及的很多特性都是实验性质的,现代浏览器基本支持了大部分了,如果在使用下面提到的属性的时候又需要兼容主流浏览器的时候,可以先查看一下Can I use

1. flex + gap

在谈论到 Flexbox的时候,不得不提 gap 属性,是用来设置网格行与列之间的间隙(gutters),该属性是row-gapcolumn-gap 的简写形式。

.flex-gap {
  display: flex;
  flex-wrap: wrap;
  gap: 1em;
}

效果如下:

image.png

在线预览:codepen.io/quintiontan…

2. grid + place-items

它允许相关的布局(如 gridFlexbox)中可以同时沿着块级和内联方向对齐元素,可以仅用两行代码实现水平和垂直对齐项目。

place-itemsjustify-itemsalign-items 的简写属性,可以一次应用于一个或多个(子)单元格。

.grid-wrapper {
    display: grid;
    height: 98vh;
    background-color: #efefef;
}
.center-block {
    display: grid;
    place-items: center;
}

效果如下:

image.png

在线预览:codepen.io/quintiontan…

3. flex + margin

水平和垂直对其项目的另一种实现方式,使用组合 display:flexmargin:auto 的组合。

.grid-wrapper {
  display: flex;
  height: 98vh;
  background-color: #efefef;
}
.center-block {
  margin: auto;
}

使用下面的代码也是可以实现同样的效果:

.grid-wrapper {
  display: flex;
  height: 98vh;
  background-color: #efefef;
  justify-content: center;
  align-items: center;
}

效果如下:

image.png

在线预览:codepen.io/quintiontan…

4. columns

这个属性允许将文本拆分为列,column-count 属性指定列数,column-gap 设置列间间隙,column-rule 设置列间垂直线的样式。而 columnscolumn-countcolumn-width 的简写属性。

样式代码如下:

p {
  margin: 1em;
  column-count: 4;
  column-gap: 2em;
  column-rule: 1px dotted #506ee4;
  line-height: 1.6;
  text-align: justify;
}

html 代码:

<p>卡耐基对微笑有这样的描述:“它在家中产生,他不能买,不能求,不能借,不能偷,因为在人们得到它之前,对谁都是无用的东西,他给予后人之后,会使你得到别人的好感,它是疲倦者的休息,希望的阳光,悲哀者的力量,又是大自然免费赋予人们的一种解除苦难的良药。” </p>

效果如下:

image.png

在线预览:codepen.io/quintiontan…

5. inline-flex

此属性允许创建具有 Flexbox 功能的内联元素,过多的描述不如实例:

HTML 结构代码如下:

<span>👋</span>
<span>👐</span>
<span>👌</span>
<span>👍</span>

主要样式表代码:

span {
  width: 2.5em;
  height: 2.5em;
  /* --inline-flex设置开始-- */
  display: inline-flex;
  justify-content: center;
  align-items: center;
  /* --inline-flex设置结束-- */
  background: #506ee4;
  box-shadow: 0 7px 14px 0 rgb(0 4 68 / 50%);
  font-size: 1.2rem;
  outline: 1px dashed #fff;
  outline-offset: -5px;
}

效果如下:

image.png

在线预览:codepen.io/quintiontan…

6. filter

filter 属性允许对元素应用一些视觉效果,渲染一些复杂的图形效果,如模糊、颜色偏移、滤镜等,主要应用于 svg 滤镜元素。

下面列出了 filter 可用的属性值及功能说明:

  • url():获取指向SVG过滤器的URI,例如:filter: url("media.svg");
  • blur():将高斯模糊应用于输入图像,只接受具体的长度值,不接受百分比值,默认为0。例如:filter: blur(1px);
  • brightness():将线性乘法器应用于输入图像,使其看起来或多或少地变得明亮。值为 0% 将创建全黑图像,值为 100% 保持不变,例如:filter: brightness(50%);
  • contrast():调整输入图像的对比度,值是 0%  创建全黑图像,值是 100%,图像不变,值可以超过 100%。例如:filter: contrast(200%);
  • drop-shadow():对输入图像应用阴影效果,阴影可以设置模糊度的,以特定颜色画出的遮罩图的偏移版本,最终合成在图像下方。例如:filter: drop-shadow(16px 16px 20px #ff0000);
  • grayscale():将改变输入图像灰度,amount 的值定义了转换的比例,值为 100% 则完全转为灰度图像,值为 0% 图像无变化,值在 0% - 100% 之间,则是效果的线性乘数。例如:filter: grayscale(100%);
  • hue-rotate():在输入图像上应用色相旋转,例如:filter: hue-rotate(90deg);
  • invert():反转输入图像
  • opacity():转化图像的透明度
  • saturate():转换图像饱和度
  • sepia():将图像转换为深褐色

是快速的实现网站主题颜色切换的方案之一,下面代码实现了一个简答的切换主题的效果,点击复选框即可看到。

主要CSS代码如下:

.theme:checked + .typography {
  filter: invert();
}

效果如下:

image.png

image.png

在线预览:codepen.io/quintiontan…

推荐一个库 CSSgram ,可以用于使用 CSS 过滤器和混合模式重新创建 Instagram 过滤器。

7. drop-shadow

filterdrop-shadow() 属性与 box-shadow 属性不同,它在应用效果方面类似,允许向图像本身添加阴影,而不是给它所在的框添加阴影。

如下效果:

image.png

第一个效果 box-shadow: 0 7px 14px 0 #ff0000; ,第二个效果是 filter: drop-shadow(0 7px 14px #ff0000);

在线预览:codepen.io/quintiontan…

8. object-fit

object-fit 属性控制被替换元素(如 imgvideo)的长宽比(如果它们有宽度或高度)以及缩放过程。

例如,scale-down 值可以保持图像的宽高比,而不用考虑框的大小:

<img src="https://pics.freeicons.io/uploads/icons/png/21088442871540553614-256.png" alt="javascript" />
<img src="https://pics.freeicons.io/uploads/icons/png/14016183671580802975-256.png" alt="typescript" />
<img src="https://pics.freeicons.io/uploads/icons/png/191213921552037062-256.png" alt="vue" />

css 代码:

img {
  width: 100px;
  height: 100px;
  padding:2px;
  /*  --开始object-fit属性设置--  */
  object-fit: scale-down;
  /*  --结束object-fit属性设置--  */
  border: 1px dashed #506ee4;
  border-radius: 20px;
}

效果如下:

image.png

在线预览:codepen.io/quintiontan…

9. cursor

你是否觉得浏览器提供的鼠标图形不好看,那么可以使用这个属性设置你想要的性质,可以是图片和svg

<div class="image">image</div>
<div class="svg">svg</div>

css代码如下:

.image {
  cursor: url("https://pics.freeicons.io/uploads/icons/png/20278001131579606320-32.png"),auto;
}
.svg {
  cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'  width='40' height='40' viewport='0 0 100 100' style='fill:black;font-size:22px;'><text y='50%'>🐧</text></svg>"),auto;
}

10. caret-color

caret-color 属性用来定义插入光标(caret)的颜色,插入光标,就是在可编辑器区域内,用来指示用户的输入的那个一闪一闪的形似竖杠|的东西。

在线预览:codepen.io/quintiontan…

11. background-clip

background-clip 属性定义背景颜色或背景图像应该超出元素的内边距的程度,text 是这个属性是个有意思的值,让文字变得生动。

html 代码如下:

<p>DevPoint</p>

css 代码如下:

p {
  font-family: "Bungee", cursive;
  font-size: 8rem;
  color: transparent;
    font-weight:bolder;
  /* --开始background-clip设置-- */
  background-image: url("https://crayon.devpoint.cn/assets/images/bgs/main.jpg");
  -webkit-background-clip: text;
  background-clip: text;
  /* --结束background-clip设置-- */
  background-size: cover;
  background-position: center;
}

效果如下:

image.png

在线预览:codepen.io/quintiontan…

12. background-repeat

background-repeat 属性设置图像填充背景的顺序,round 值将图像均匀地分布在容器的整个宽度上,而space值则在图像之间添加少量填充:

.repeat div {
  background-repeat: repeat;
}
.round div {
  background-repeat: round;
}
.space div {
  background-repeat: space;
}

效果如下:

image.png

在线预览:codepen.io/quintiontan…

13. ::marker

通常使用 list-style: none 删除列表标记,并使用 ::before::after 伪元素添加自定义的标记。现在有一种更简单的方法可以做到这一点就是使用 ::marker 伪元素。

li::marker {
  content: "✔ ";
  color: green;
}
li:last-child::marker {
  content: "✖ ";
  color: red;
}

在线预览:codepen.io/quintiontan…

14. :target

:target 伪类可以在无需 JavaScript 的情况下创建模态窗口:

.modal {
  opacity: 0;
  visibility: hidden;
  transition: 0.3s ease-in;
}
.modal:target {
  opacity: 1;
  visibility: visible;
}

在线预览:codepen.io/quintiontan…

15. ::selection

::selection 伪元素用来设置文本选择的样式。

p::selection {
  background-color: #ff0000;
  color: #fff;
}

image.png

在线预览:codepen.io/quintiontan…

总结

CSS是前端工程师的基本功,如何设计制作出一个交互性强的效果,需要一定的空间思维。对于初学者而言,个人觉得最好的方式就是模仿,找一些交互不错的网站去模仿。现在浏览器基本都支持最新的CSS,未来WEB将会出现令人惊叹的效果。


相关文章
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
188 1
|
11月前
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
10月前
|
前端开发 JavaScript
如何使用CSS过渡实现页面元素的淡入淡出效果?
如何使用CSS过渡实现页面元素的淡入淡出效果?
459 79
|
11月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
512 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
10月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
296 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
11月前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
330 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
11月前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
239 34
|
数据采集 前端开发 JavaScript
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
本文介绍了如何使用 Puppeteer 结合 CSS 选择器抓取动态网页中的关键元素,以亚航网站的特价机票信息为例,通过设置代理 IP、User-Agent 和 Cookie 等技术手段,有效提升爬虫策略,实现高效、稳定的爬取。
362 5
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
490 7
|
JavaScript
jQuery+css3制作精美的2024圣诞节倒计时页面
jQuery+css3制作精美的2024圣诞节倒计时页面动画
114 0
jQuery+css3制作精美的2024圣诞节倒计时页面