关于javascript:让你兴奋不已的13个CSS技巧🤯

微信搜寻 【大迁世界】, 我会第一工夫和你分享前端行业趋势,学习路径等等。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

快来收费体验ChatGpt plus版本的,咱们出的钱 体验地址:https://chat.waixingyun.cn 能够退出网站底部技术群,一起找bug,另外新版作图神器已上线 https://cube.waixingyun.cn/home

1.应用边框绘制一个三角形

在某些状况下,例如在工具提醒中增加箭头指针时,如果你只须要简略的三角形,那么加载图片可能会适度。

仅应用CSS,您就能够通过边框创立一个三角形。

这是一个相当老的技巧。现实状况下,你会在一个宽度和高度都为零的元素上设置边框。所有的边框色彩都是通明的,除了那个将造成箭头的边框。例如,要创立一个向上指的箭头,底部边框是有色彩的,而右边和左边是通明的。无需包含顶部边框。边框的宽度决定了箭头的大小。

.upwards-arrow {
    width: 0;
    height: 0;
    border-left: 20px solid transparent;
    border-right: 20px solid transparent;

    border-bottom: 20px solid crimson;
}

这将创立一个像上面所示的向上指的箭头:

事例地址:https://codepen.io/chriscoyier/pen/DELgOJ

2.替换元素的背景

z-index 属性规定了元素如何重叠在其余定位元素上。有时,你可能会设置一个 z-index 属性让子元素的层级较低,后果却发现它暗藏在其父元素的背景之后。为了避免这种状况,你能够在父元素上创立一个新的重叠上下文,避免子元素暗藏在其前面。创立重叠上下文的一种办法是应用 isolation: isolate CSS款式申明。

咱们能够利用这种重叠上下文技术来创立悬停成果,该成果能够替换按钮的背景。例如:

button.join-now {
    cursor: pointer;
    border: none;
    outline: none;
    padding: 10px 15px;

    position: relative;
    background-color: #5dbea3;
    isolation: isolate; /* If ommitted, child pseudo element will be stacked behind */
}

button.join-now::before {
    content: "";
    position: absolute;
    background-color: #33b249;
    top: 0;
    left: 100%;
    right: 0;
    bottom: 0;
    transition: left 500ms ease-out;

    z-index: -1;
}

button.join-now:hover::before {
    left: 0;
}

上述代码在鼠标悬停时替换了 button 的背景。背景的变动不会烦扰前景的文本,如上面的gif所示:

3.将元素居中

可能,你曾经晓得如何应用 display: flex;display: grid; 来居中元素。然而,另一种不太受欢迎的在x轴上居中元素的办法是应用 text-align CSS属性。这个属性在居中文本时就能间接应用。要想在DOM中也居中其余元素,子元素须要有一个 inline 的显示。它能够是 inline-block 或任何其余内联…

div.parent {
    text-align: center;
}

div.child {
    display: inline-block;
}

4.药丸💊形态按钮

能够通过将按钮的边框半径设置为十分高的值来制作药丸形态的按钮。当然,边框半径应该高于按钮的高度。

button.btn {
    border-radius: 80px; /* value higher than height of the button */
    padding: 20px 30px;
    background-color: #fdd835;
    border: none;
    color: black;
    font-size: 20px;
}

按钮的高度可能会随着设计的扭转而减少。因而,你会发现将 border-radius 设置为十分高的值是很不便的,这样无论按钮是否增大,你的css都能持续工作。

5.轻松为你的网站增加好看的加载指示器

对于开发者来说,将注意力转移到为你的网站创立一个好看的加载指示器上往往是一项乏味的工作。这种关注力更好地用于构建我的项目的其余重要局部,这些局部值得咱们去关注。

当你在浏览时,很可能你也感觉这是个令人烦恼的难题。这就是为什么我花工夫为你打消这个阻碍,并精心筹备了一个装有加载指示器的库,让你能够在你的幻想我的项目中“即插即用”。这是一个残缺的汇合,你只须要挑选出那个能点燃你心中火花💖的。只需看看这个库的简略用法,源代码在Github上可用。别忘了给个星星⭐

地址:https://www.npmjs.com/package/react-loading-indicators

6.繁难暗色或亮色模式

您只须要几行CSS代码,就能够在咱们的网站上启用深色/浅色模式。您只需让浏览器晓得,您的网站能够在零碎的深色/浅色模式下正确显示。

html {
    color-scheme: light dark;
}

留神: color-scheme 属性能够设置在除 html 之外的任何DOM元素上。

而后通过咱们的网站设置管制背景色彩和文字色彩的变量,通过查看浏览器反对使其更加防弹:

html {
    --bg-color: #ffffff;
    --txt-color: #000000;
}

@supports (background-color: Canvas) and (color: CanvasText) {
    :root {
        --bg-color: Canvas;
        --txt-color: CanvasText;
    }
}

留神:如果你不在元素上设置 background-color ,它将继承浏览器定义的与深色/浅色主题匹配的零碎色彩。这些零碎色彩在不同的浏览器之间可能会有所不同。

明确设置 background-color 能够与 prefers-color-scheme 联合应用,以提供与浏览器默认设置不同的色彩暗影。

以下是暗/亮模式的理论利用。用户的偏好在暗模式和亮模式之间进行模仿。

7.应用省略号( … )截断溢出的文本

这个技巧曾经存在一段时间,用于好看地修剪长文本。但你可能依然错过了它。你只须要以下的CSS:

p.intro {
    width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

只需施行以下规定:

  • 明确的宽度,因而剪裁的边界将永远被达到。
  • 浏览器会将超出元素宽度的长文本进行换行。所以你须要阻止这种状况: white-space: nowrap; 。
  • 溢出的内容应被剪裁: overflow: hidden; 。
  • 当文本行将被剪切时,用省略号( … )填充字符串: text-overflow: ellipsis; 。

后果看起来像这样:

8.将长文本截断为若干行

这与上述技巧略有不同。这次,文本被剪裁,将内容限度为肯定的行数。

p.intro {
    width: 300px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3; /* Truncate when no. of lines exceed 3 */
    overflow: hidden;
}

输入看起来像这样:

9. 进行适度操劳本人写作 toprightbottomleft

在解决定位元素时,你通常会编写如下代码:

.some-element {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}

这能够通过应用 inset 属性来简化:

.some-element {
    position: absolute;
    inset: 0;
}

或者,如果你对 toprightbottomleft 有不同的值,你能够依照如下的程序别离设置它们: inset: -10px 0px -10px 0px这种简写形式与margin 的工作形式雷同。

10.提供优化过的图片

请尝试在浏览器的开发者工具中将网络速度调整到较慢,而后拜访一个由高清图片组成的网站,比方 unsplash。这就是你的网站访客在网络速度较慢的天文区域尝试观赏你的高清内容时所经验的苦楚。

但你能够通过 image-set CSS 技巧提供一种拯救办法。

能够为浏览器提供选项,让它决定最适宜用户设施的图片。例如:

.banner {
    background-image: url("elephant.png"),
    background-image: -webkit-image-set(
        url("elephant.webp") type("image/webp") 1x,
        url("elephantHD.webp") type("image/webp") 2x,
        url("elephant.png") type("image/png") 1x,
        url("elephantHD.png") type("image/png") 2x
    );
}

上述代码将设置元素的背景图像。

如果反对 -webkit-image-set ,那么背景图像将会是一种优化的图像,也就是说,这将是一种反对的MIME类型的图像,且更适宜用户设施的分辨率能力。

例如:因为更高质量的图像间接与更大的尺寸成正比,所以在网络情况差的状况下应用高分辨率设施的用户,会促使浏览器决定提供反对的低分辨率图像。让用户期待高清图像加载是不合逻辑的。

11. 计数器

你不用纠结于浏览器如何渲染编号列表。你能够利用 counters() 实现你本人的设计。以下是操作方法:

ul {
    margin: 0;
    font-family: sans-serif;

    /* Define & Initialize Counter */
    counter-reset: list 0;
}

ul li {
    list-style: none;
}

ul li:before {
    padding: 5px;
    margin: 0 8px 5px 0px;
    display: inline-block;
    background: skyblue;
    border-radius: 50%;
    font-weight: 100;
    font-size: 0.75rem;

    /* Increment counter by 1 */
    counter-increment: list 1;
    /* Show incremented count padded with `.` */
    content: counter(list) ".";
}

12.表单验证视觉提醒

仅应用CSS,您就能够向用户显示无关表单输出有效性的视觉提醒。咱们能够在表单元素上应用 :valid:invalid CSS伪类,当其内容验证胜利或失败时,利用适当的款式。

请思考以下HTML页面构造:

<!-- Regex in pattern attribute means input can accept `firstName Lastname` (whitespace sepearated names) -->
<!-- And invalidates any other symbols like `*` -->
<input
    type="text"
    pattern="([a-zA-Z0-9]\s?)+"
    placeholder="Enter full name"
    required
/>
<span></span>

<span> 将用于显示验证后果。以下的CSS依据其验证后果来设置输入框的款式:

input + span {
    position: relative;
}

input + span::before {
    position: absolute;
    right: -20px;
    bottom: 0;
}

input:not(:placeholder-shown):invalid {
    border: 2px solid red;
}

input:not(:placeholder-shown):invalid + span::before {
    content: "✖";
    color: red;
}

input:not(:placeholder-shown):valid + span::before {
    content: "✓";
    color: green;
}

地址:https://codepen.io/hane-smitter/pen/wvQpvZL

13. 一键抉择文本

这个技巧次要是为了晋升网站用户的复制和粘贴体验。应用 user-select: all ,能够通过一键实现简略的文本抉择。所有位于该元素下方的文本节点都会被选中。

另一方面,能够应用 user-select: none; 来禁用文本抉择。禁用文本抉择的另一种办法是将文本放在 ::before::after CSS伪元素的 content: ''; 属性中。

交换

有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理