`

CSSCore

 
阅读更多

CSSCore用于添加、移除、判断是否包含某个样式类,以及是否某个校验器。

 

'use strict';

// 首参否值报错
var invariant = require('./invariant');

// 通过父节点判断元素element是否匹配某个选择器selector
function matchesSelector_SLOW(element, selector) {
  var root = element;
  while (root.parentNode) {
    root = root.parentNode;
  }

  var all = root.querySelectorAll(selector);
  return Array.prototype.indexOf.call(all, element) !== -1;
}

var CSSCore = {

  // 添加样式类
  addClass: function addClass(element, className) {
    !!/\s/.test(className) ? 
      process.env.NODE_ENV !== 'production' ? 
        invariant(false, 'CSSCore.addClass takes only a single class name. "%s" contains ' 
          + 'multiple classes.', className) 
        : invariant(false) 
      : void 0;

    if (className) {
      if (element.classList) {
        element.classList.add(className);
      } else if (!CSSCore.hasClass(element, className)) {
        element.className = element.className + ' ' + className;
      }
    }
    return element;
  },

  // 移除样式类
  removeClass: function removeClass(element, className) {
    !!/\s/.test(className) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'CSSCore.removeClass takes only a single class name. "%s" contains ' + 'multiple classes.', className) : invariant(false) : void 0;

    if (className) {
      if (element.classList) {
        element.classList.remove(className);
      } else if (CSSCore.hasClass(element, className)) {
        element.className = element.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)', 'g'), '$1').replace(/\s+/g, ' ') // multiple spaces to one
        .replace(/^\s*|\s*$/g, ''); // trim the ends
      }
    }
    return element;
  },

  // 按第三个参数布尔值添加或移除样式类
  conditionClass: function conditionClass(element, className, bool) {
    return (bool ? CSSCore.addClass : CSSCore.removeClass)(element, className);
  },

  // 判断元素是否包含某个样式类
  hasClass: function hasClass(element, className) {
    !!/\s/.test(className) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'CSS.hasClass takes only a single class name.') : invariant(false) : void 0;
    if (element.classList) {
      return !!className && element.classList.contains(className);
    }
    return (' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1;
  },

  // 判断元素是否匹配某个选择器
  matchesSelector: function matchesSelector(element, selector) {
    var matchesImpl = element.matches || element.webkitMatchesSelector || element.mozMatchesSelector || element.msMatchesSelector || function (s) {
      return matchesSelector_SLOW(element, s);
    };
    return matchesImpl.call(element, selector);
  }

};

module.exports = CSSCore;

 

0
0
分享到:
评论

相关推荐

    2L:[css] CSS压缩的类包

    postcss core.css \ -u postcss-import \ -u postcss-css-variables \ -u cssnano \ -o ./build.css --no-map 充分 postcss raw/* \ -u autoprefixer \ -d src --no-map \ && \ postcss cor

    前端项目-core.css.zip

    在前端开发领域,"core.css.zip" 这个文件标题暗示了一个重要的概念——核心样式表。这通常是指一个项目的基石,包含了一些基本的、全局的CSS样式规则,用于确保整个网站或应用程序有一致的视觉呈现和用户体验。...

    Core CSS

    **Core CSS 知识点详解** Core CSS 是一本专注于CSS(Cascading Style Sheets)核心概念和技术的英文原版教程。CSS是网页设计中的关键部分,用于定义网页内容的布局和样式,使得网页呈现更加美观且易于维护。本书...

    quill.core.css

    quill.core.css

    OTRS:专门为AXIS Bank设计的OTRS Web门户

    这是我为期一个月的实习项目。 CLient是AXIS Bank的一个分支机构,希望更改 (票务软件)的UI以反映AXIS Bank的主题。 内容 部署和使用 ... Core.AgentTicketQueue.css Core.Default.css Core.Form.cs

    Core Css 参考书 Css禅意花园作者

    《Core CSS 参考书》是由著名的Web设计大师、《CSS禅意花园》的作者撰写的一系列关于CSS(层叠样式表)的参考资料。这本书旨在深入解析CSS的核心概念和技术,帮助读者掌握网页设计中的样式控制,提升网页布局与美化...

    (quill.bubble.css,quill.core.css,quill.snow.css)

    (quill.bubble.css,quill.core.css,quill.snow.css)

    Core Specification Supplement(css_v9.pdf)

    官方蓝牙资料,蓝牙协议文档 This supplement contains information related to data types, common Profile and Service error codes, and enumerates the services permitted to use Security Mode 4 Level 0

    css-core-1.1.0.zip

    《CSS核心技术详解与开源项目libhyphen的Java实现》 在互联网开发中,CSS(Cascading Style Sheets)作为网页样式控制的核心技术,扮演着至关重要的角色。它赋予HTML或XML文档丰富的视觉表现力,使得网页设计既美观...

    原生js Aui-core结合css3 transform属性制

    在这个项目中,我们看到Aui-core与CSS3的`transform`属性相结合,来实现更丰富的视觉效果和动态交互。 `transform`属性是CSS3中的一个强大特性,它允许我们对元素进行二维或三维的变换,如旋转、缩放、平移和倾斜等...

    MOSS2007 CORE.CSS样式文件解析

    **MOSS 2007 CORE.CSS样式文件解析** Microsoft Office SharePoint Server (MOSS) 2007 是一个企业级的信息管理和协作平台,它基于ASP.NET技术,并使用CSS(层叠样式表)来控制页面的布局和外观。CORE.CSS是MOSS ...

    Bootstrap CSS

    BootStrap Custom Theme CSS

    CSS v6__Core Specification Supplement

    CSS v6即CSS版本6是蓝牙核心规范的补充版,它为蓝牙4.0版本的蓝牙核心规范提供了一种新的补充。蓝牙4.0版本相较于之前的版本而言,主要的改进在于低功耗模式的引入,这使得蓝牙技术在移动设备和便携式设备的应用得到...

    extract-css-core:从给定的网址中提取所有CSS,同时渲染服务器端和客户端

    const extractCss = require ( 'extract-css-core' ) const css = await extractCss ( 'https://www.projectwallace.com' ) //=> html{font-size:100%} etc. 或者,如果您需要更多详细信息: const entries = ...

    后台经典CSS模板

    .NET提供了ASP.NET MVC和ASP.NET Core等技术,结合CSS模板,可以快速构建功能完备的后台管理系统。 以上是后台经典CSS模板中的主要知识点,熟练掌握这些内容,可以极大地提高后台界面的设计效率和用户体验。在实际...

    JSP ASPNET CSS HTML

    它提供了一种模型-视图-控制器(MVC)架构,以及Web Forms和ASP.NET Core等不同的开发模式。ASP.NET提供了丰富的控件、自动状态管理、强大的身份验证和授权机制,以及易于部署和配置的优势。开发者可以使用C#或VB...

    CoreUI前端模版

    - CSS和SCSS文件:这些文件定义了模板的样式,SCSS是Sass语言,可以方便地进行样式定制和扩展。 - JavaScript和jQuery文件:用于实现交互效果和动态行为。 - 图片资源:如背景图、logo等,用于增强界面的视觉效果。 ...

    js css html手册 jstl标签

    【JSTL】是Java服务器页面的标准标签库,它提供了一系列标签来简化JSP的编程,特别是`Core_标签库介绍.doc`,将详细解释如何使用JSTL的核心标签库,包括条件语句、循环、URL处理等,极大地提高了JSP的可读性和可维护...

    jsp和css文件

    EL用于在JSP页面中简洁地表达Java表达式,JSTL则提供了一系列标签库,如Core、XML、HTML、Form等,使得JSP页面更加清晰、易读。 综上所述,JSP和CSS的结合使用是Web开发中的常见实践,它们各自负责不同的职责,协同...

Global site tag (gtag.js) - Google Analytics