首页与我联系

「短文」 1 分钟学 6 个常见的 DOM 基础操作(三)

By 前端达人
Published in 1-JavaScript
September 04, 2022
1 min read
「短文」 1 分钟学 6 个常见的 DOM 基础操作(三)

大家好,今天我们来花 1 分钟来学习 DOM 相关的基础操作的第三部分,内容虽然简单,但是还是有必要归纳总结的,希望这些整理对大家有所帮助。

1、检测元素是否聚焦

假设 ele 表示您要检查它当前是否具有焦点的元素:

const hasFocus = ele === document.activeElement;

2、检测 Internet Explorer 浏览器

const isIe = function () {
    const ua = window.navigator.userAgent;
    return ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1;
};

我们也可以依赖 document.documentMode。该属性表示文档的文档兼容模式,在 IE 5-11 中为整数。其他浏览器返回未定义。

const isIE = !!document.documentMode;

3、检测 mac OS 浏览器

检查当前浏览器是否在 Mac 上运行:

const isMacBrowser = /Mac|iPod|iPhone|iPad/.test(navigator.platform);

4、检测移动浏览器

以下是检查用户是否从移动浏览器浏览的几种方法。

4.1、 检查userAgent(不推荐)

// You can add more if you want
const isMobile = /Android|BlackBerry|iPad|iPod|iPhone|webOS/i.test(navigator.userAgent);

4.2、使用特征检测

检查浏览器是否支持pointer:coarse媒体查询

const isMobile = function () {
    const match = window.matchMedia('(pointer:coarse)');
    return match && match.matches;
};

我们不能依赖屏幕尺寸,因为移动设备越来越大。

5、检测暗黑模式

macOS、Windows 10 等现代操作系统允许用户选择他们希望在所有应用程序中设置暗黑和明亮模式。

以下屏幕截图取自 macOS 的常规设置的窗格:

appearance-setting.png

可以通过查看 prefers-color-scheme 媒体查询来检测该选项。

它可以是以下值之一:

light:用户希望在 light 模式下查看页面

dark:用户希望在暗黑模式下查看页面

no-preference:系统不知道用户的偏好

通过检查这个媒体查询值,我们可以确定用户设置的系统模式:

const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;

6、确定元素的高度和宽度

假设 ele 表示要计算大小的元素的 DOM。

// 获取 styles
const styles = window.getComputedStyle(ele);

// 不包含 padding and border
const height = ele.clientHeight - parseFloat(styles.paddingTop) - parseFloat(styles.paddingBottom);
const width = ele.clientWidth - parseFloat(styles.paddingLeft) - parseFloat(styles.paddingRight);

// 只包含 padding
const clientHeight = ele.clientHeight;
const clientWidth = ele.clientWidth;

// 包含 padding and border
const offsetHeight = ele.offsetHeight;
const offsetWidth = ele.offsetWidth;

// 包含 padding, border and margin
const heightWithMargin = ele.offsetHeight + parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
const widthWithMargin = ele.offsetWidth + parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);

前端达人公众号.jpg

注:本文属于原创文章,版权属于「前端达人」公众号及 qianduandaren.com 所有,未经授权,谢绝一切形式的转载


Tags

javascriptdom
Previous Article
动手练一练,深入学习 4 个与 Hover 相关的动效案例 (上)
前端达人

前端达人

专注前端知识分享

Table Of Contents

1
1、检测元素是否聚焦
2
2、检测 Internet Explorer 浏览器
3
3、检测 mac OS 浏览器
4
4、检测移动浏览器
5
5、检测暗黑模式
6
6、确定元素的高度和宽度

相关文章

「短文」如何在 JavaScript 中随机数组
November 03, 2022
1 min

前端站点

VUE官网React官网TypeScript官网

公众号:前端达人

前端达人公众号