让你的网站支持iOS13 Darkmode 模式的工具

更新日期: 2019-10-09阅读: 1.9k标签: 模式

最近iOS13 发布了darkmode模式。虽然本人觉得次此功能呼声大于实际,但作为一个以用户体验为己任的前端,当然不能坐视不管,我们总该做点什么。在进行了一番调研了解后,我们有几种支持darkmode模式的方法。

首先了解到一个叫 Darkmode.js 的工具,该工具通过配置一些通用的颜色,能让网站实现一键切换darkmode模式,简单方便。但缺点就是没办法实现比较细微的界面定制,只能在一些颜色上做处理。

如果你的设计师在设计稿上另外做了一版暗黑模式的,并且细节上除了颜色还有一些图片的修改,这时候可以用到css的媒体查询,对正常模式下的一些样式做覆盖。举个例子

.body {
    color: #000;
    background: url('normal.png');
}

在媒体查询中,我们覆盖需要修改的属性

/* b.css */
.body {
    color: #000;
    background: url('normal.png');
}

@media (prefers-color-scheme: dark) {
    .body {
        color: #fff;
        background: url('dark.png');
    }
}

在支持暗黑模式媒体查询的浏览器中,会自动渲染出media中的样式,实现样式覆盖。

该方法需要我们每次写一个样式都要在媒体查询中输入同样的选择器,如果选择器嵌套比较深或者当样式表比较长的时候,需要来回切换位置或文件,比较麻烦。基于这点,我开发了一个小工具,支持在正常样式的旁边,以注释的方式写上暗黑模式的样式,后续工具会自动编译成media的格式,无需用户手动编写。

举个例子,我们的代码可以这样写:

.body {
    color: #000;
    background: url('normal.png');
    /* dm[color: #fff;background:url('dark.png');] */
}

该文件最后会被编译成b.css中的格式。 如果每次都需要输入/* dm[] */会比较繁琐,你可以在IDE中创建一个snippet. 方便输入。

更多详细的用法,请移步至 css-plugin-darkmode


链接: https://fly63.com/article/detial/6329

js设计模式之单例模式,javascript如何将一个对象设计成单例

单例模式是我们开发中一个非常典型的设计模式,js单例模式要保证全局只生成唯一实例,提供一个单一的访问入口,单例的对象不同于静态类,我们可以延迟单例对象的初始化,通常这种情况发生在我们需要等待加载创建单例的依赖。

前端设计模式:从js原始模式开始,去理解Js工厂模式和构造函数模式

工厂模式下的对象我们不能识别它的类型,由于typeof返回的都是object类型,不知道它是那个对象的实例。另外每次造人时都要创建一个独立的person的对象,会造成代码臃肿的情况。

JavaScript设计模式_js实现建造者模式

建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象

html和xhtml,DOCTYPE和DTD,标准模式和兼容模式

主要涉及知识点: HTML与XHTML,HTML与XHTML的区别,DOCTYPE与DTD的概念,DTD的分类以及DOCTYPE的声明方式,标准模式(Standard Mode)和兼容模式(Quircks Mode),标准模式(Standard Mode)和兼容模式(Quircks Mode)的区别

前端四种设计模式_JS常见的4种模式

JavaScript中常见的四种设计模式:工厂模式、单例模式、沙箱模式、发布者订阅模式

javascript 策略模式_理解js中的策略模式

javascript 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 策略模式利用组合,委托等技术和思想,有效的避免很多if条件语句,策略模式提供了开放-封闭原则,使代码更容易理解和扩展, 策略模式中的代码可以复用。

javascript观察者模式_深入理解js中的观察者模式

javascript观察者模式又叫发布订阅模式,观察者模式的好处:js观察者模式支持简单的广播通信,自动通知所有已经订阅过的对象。存在一种动态关联,增加了灵活性。目标对象与观察者之间的抽象耦合关系能够单独扩展以及重用。

Vue中如何使用方法、计算属性或观察者

熟悉 Vue 的都知道 方法methods、计算属性computed、观察者watcher 在 Vue 中有着非常重要的作用,有些时候我们实现一个功能的时候可以使用它们中任何一个都是可以的

我最喜欢的 JavaScript 设计模式

我觉得聊一下我爱用的 JavaScript 设计模式应该很有意思。我是一步一步才定下来的,经过一段时间从各种来源吸收和适应直到达到一个能提供我所需的灵活性的模式。让我给你看看概览,然后再来看它是怎么形成的

Flutter 设计模式 - 简单工厂

在围绕设计模式的话题中,工厂这个词频繁出现,从 简单工厂 模式到 工厂方法 模式,再到 抽象工厂 模式。工厂名称含义是制造产品的工业场所,应用在面向对象中,顺理成章地成为了比较典型的创建型模式

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!