首页 > 其他分享 >现代 CSS 解决方案:accent-color 强调色

现代 CSS 解决方案:accent-color 强调色

时间:2024-02-27 10:49:02浏览次数:33  
标签:颜色 color accent -- scheme CSS

accent-color 是从 Chrome 93 开始被得到支持的一个不算太新属性。之前一直没有好好介绍一下这个属性。直到最近在给一些系统整体切换主题色的时候,更深入的了解了一下这个属性。

简单而言,CSS accent-color 支持使用几行简单的 CSS 为表单元素着色,是的,只需几行代码就可以将主题颜色应用到页面的表单输入。

表单元素一直被吐槽很难自定义。而 accent-color 就是规范非常大的一个改变,我们开始能更多的自定义原生的表单的样式了!

如何使用 accent-color

OK,我们一起来学习一下,我们应该如何使用 accent-color

首先,我们来实现这么一个简单的表单界面:

<div class="wrapper">
	<form action="">
		<fieldset>
			<legend>Accent-color Demo</legend>

			<label>
				Strawberries
				<input type="checkbox" id="berries_1" value="strawberries">
			</label>

			<label>
				Radio Buttons
				<div>
					<input type="radio" name="accented-demo" checked>
					<input type="radio" name="accented-demo">
					<input type="radio" name="accented-demo">
				</div>
			</label>

			<label>
				Range Slider
				<input type="range">
			</label>

			<label>
				Progress element
				<progress max="100" value="50">50%</progress>
			</label>
		</fieldset>
	</form>
</div>

只需要最简单的布局 CSS,与 accent-color 关系不大,我就不列出来了,这样,我们的 DEMO 大致如下:

可以看到,表单控件的主题颜色是蓝色,在之前,我们是没办法修改这个颜色的。

而现在,我们可以简单的借助 accent-color,修改表单的主题色:

:root {
	accent-color: rgba(250, 15, 117);
}

其中,rgba(250, 15, 117) 表示粉色,此时,整体的效果就变成了:

当然,这个 accent-color 也支持传入 CSS 变量,配合更多的其他颜色一起进行修改。

我们可以对上述的 DEMO 再简单改造:

:root {
	--brand: rgba(250, 15, 117);
	accent-color: var(--brand);
}
fieldset {
	border: 1px solid var(--brand);
}
legend {
	color: var(--brand);
}

我们设置了一个 CSS 变量 --brand: rgba(250, 15, 117),除了把这个颜色赋值给表单的 accent-color,还能赋值给其它更多元素。譬如这里,我们赋值给了 <fieldset> 的边框色和 <legend> 的文字颜色。

这样,当我们修改 CSS 变量值时,整个主题色会一起发生变化:

完整的 DEMO,你可以戳这:CodePen Demo -- Accent-color with custom property

通常而言,更多的时候,我们会将 accent-color 应用于:

color-scheme 配合使用,适配日间夜间模式

还有一个容易忽略的细节点。accent-color 还支持和 color-scheme 一起使用。

OK,什么是 color-scheme 呢?color-scheme 是 CSS 的一个属性,用于指定网页的颜色方案或主题。它定义了网页元素应该使用哪种颜色方案来呈现内容。

color-scheme 属性有以下几个可能的取值:

  • auto:表示使用用户代理(浏览器)的默认颜色方案。这通常是浏览器自动根据操作系统或用户设置选择的方案。
  • light:表示使用浅色颜色方案。这通常包括浅色背景和深色文本。
  • dark:表示使用深色颜色方案。这通常包括深色背景和浅色文本。

通过指定适当的 color-scheme 值,开发者可以为网页提供不同的颜色方案,以适应用户的偏好或操作系统的设置。这有助于提供更好的可访问性和用户体验。

譬如,我们可以将页面的 color-schema 设置为 light dark

body {
  color-scheme: light dark;
}

上述代码表示页面将同时支持浅色和深色颜色方案。它告诉浏览器,网页希望适应用户代理(浏览器)的默认颜色方案,并同时支持浅色和深色模式。

当使用 color-scheme: light dark 时,浏览器会根据用户代理的默认颜色方案来选择适当的颜色方案。如果用户代理处于浅色模式,网页将使用浅色颜色方案来呈现内容;如果用户代理处于深色模式,网页将使用深色颜色方案来呈现内容。

此时,我们的代码可以这样改造:

:root {
	--brand: rgba(250, 15, 117, 1);
	accent-color: var(--brand);
}
@media (prefers-color-scheme: dark) {
	:root {
		--brand: rgba(3, 169, 244, 1);
	}
	
	body {
		background: #000;
		color: #fff;
	}
}
body {
	color-scheme: light dark;
}

下面是我在手机上调整日间模式和夜间模式的效果图:

通过 @media (prefers-color-scheme: dark) {} 媒体查询,在黑夜模式下,展示不同的 accent-color

可能有人对 @media (prefers-color-scheme: dark) 还不太了解,可以看看我的这篇文章 -- 使用 CSS prefers-* 规范,提升网站的可访问性与健壮性

完整的 DEMO,你可以戳这:CodePen Demo -- Accent-color with custom property

最后

怎样,学会了吗。并且,根据规范描述,后续 accent-color 将会应用于更多的元素。将未来的 CSS 中会逐渐变得更加重要。早点掌握不是坏事。

好了,本文到此结束,希望本文对你有所帮助

标签:颜色,color,accent,--,scheme,CSS
From: https://www.cnblogs.com/coco1s/p/18036372

相关文章

  • three.js使用 CSS2DRenderer
    导入 import{CSS2DRenderer,CSS2DObject}from'three/examples/jsm/renderers/CSS2DRenderer';functioncreateLableObj(text,vector){letlaberDiv=document.createElement('div');//创建div容器laberDiv.className='laber_name......
  • CSS 三大特性:继承、层叠性、优先级
    #CSS三大特性:继承、层叠性、优先级TIP我们实际的开发中,经常会遇到CSS应用时的冲突问题。比如本来应该产生效果的样式没有生效,或有时候不想要的效果硬实现了,为什么会产生这种效果,我们搞不清原因。接下来我们要学的CSS三大特性:继承性、层叠性、优先级就是为解决这些问题而......
  • CSScomb配置
    1.问题在配置使用CSScomb时,无论是使用官方提供的"yandex",会出现所有项均顶头显示链接yandex.json还是在网上找的一些配置,无法忽略一些无需配置的文件,且不能按我的需求:比如像width,height等必须在background-color的前面这些2.解决参考了一下yandex.json的代码,将二者一结......
  • CSS-Learning
    CSSCSS注释/**/样式表优先级行内:<h1style="color:red;">,属性:值;内部:在head内的style外部:存放在.css文件里CSS风格开发时用展开风格,利于开发上线时用紧凑风格,利于节省体积,加速,(webpack)CSS三大特性布局浮动float定位position:用于指定一个元素在文档......
  • CSS之浮动Float
    前言提到浮动,前端的小伙伴肯定都不陌生,但是随着弹性布局等等一些更好用的标准出来后,用在布局方面少了很多,当初我刚开始接触前端的时候,很习惯用浮动来给元素改变定位,当时还并不是很流行flexbox布局,很多布局会通过浮动来实现,但是使用浮动来布局会产生一些副作用,比如虽然使用浮动可......
  • 「ABC215G」 Colorful Candies 2
    题意概括有\(n\)个糖果,每种都有一个颜色\(c_i\),求对于所有\(k\in[1,n]\),求出\(C_n^k\)种方案中糖果种类的期望数,对\(998244353\)取模。分析通过期望的定义,设\(vis_i\)表示每种颜色有没有被选,颜色总数为\(m\),则期望为\(E(\sum\limits_{j=1}^{m}vis_j)\),由线性期望......
  • CSS重置通用浏览器默认样式
    html,body{height:100%;/*文字风格Sans-serif各笔画粗细相同,Serif笔画粗细不同,monospace等宽体,cursive草书,fantasy梦幻*/font-family:'MicrosoftYaHei',sans-serif,'HelveticaNeue',Helvetica,Arial,'黑体','宋体',Arial;......
  • css 动画
    <divclass="quan-box">逐渐放大消失<div>  /*申明一个div的class用于执行动画*/.quan-box{opacity:0;background:#70D97C;position:absolute;//3秒执行完成quan动画,infinite动画会无限次重复播放,steps(40)表示将整个动画过程分割成40个......
  • 爬虫之css选择器
    用soup.select方法#panel节点内部的panel—heading节点print(soup.select('.panel.panel-heading'))#ul里面的liprint(soup.select('ulli'))#id为list-2的内部element节点print(soup.select('#list-2.element'))p......
  • css 清除浮动的方法
    好的,我会增加一些更详细的说明。在web开发的过程中,"浮动"是CSS中可以使元素向左或向右移动,直到他们碰到其父元素边缘或者另一个浮动元素的属性。虽然它很有用,但是如果不正确地处理,它可能会导致一些意想不到的页面布局问题。**清除浮动的方法**:1.**使用clear属性**:HTML......