惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
GbyAI
GbyAI
M
MIT News - Artificial intelligence
美团技术团队
罗磊的独立博客
雷峰网
雷峰网
量子位
博客园 - 【当耐特】
Last Week in AI
Last Week in AI
D
Docker
小众软件
小众软件
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
WordPress大学
WordPress大学
V
V2EX
博客园_首页
腾讯CDC
The Cloudflare Blog
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
了解:使用CSS namespace进行分隔 « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2012-02-16 · via 张鑫旭-鑫空间-鑫生活

这篇文章发布于 2012年02月16日,星期四,22:51,归类于 CSS相关。 阅读 48091 次, 今日 8 次 没有评论

by zhangxinxu from http://www.zhangxinxu.com
本文地址:http://www.zhangxinxu.com/wordpress/?p=2217

关于CSS命名空间模块,有兴趣可以直接参考W3C官方内容:CSS Namespaces module

命名空间
根据维基百科的定义,命名空间(namespace)可以让XML文档可能包括来自多个XML词汇表的元素或属性彼此间没有冲突。

例如常见的XHTML文档的命名空间:

<html xmlns="http://www.w3.org/1999/xhtml">

上面代码中的URL地址就是个简单的命名空间名称,其并不指向之一实际的在线地址。浏览器不是使用或处理这个URL。当某个人阅读这里的文档代码的时候可以轻松理解命名空间所指。

CSS 命名空间
在2007年的时候,Bert Bos曾解释过为何CSS命名空间要引入:

命名空间模块很小,很简单,大概很少需要,但是正因为其小巧,所以添加到CSS中并没有什么负担。事实上,很多浏览器很早的时候就支持了。

它定义的唯一的事情就是在CSS中如何声明一个XML命名空间的前缀。当你使用的选择器仅匹配特定命名空间下的元素,则这东西就很管用。

举个例子,SVG使用了和HTML一样的元素和CSS属性。如果你为SVG文档和HTML文档同时应用了个样式文件的话,最好对SVG和HTML做样式分离以避免出现样式覆盖的情况。

使用

  1. 声明你的XHTML文档类型:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  2. 在你的样式文件中,为CSS规则定义默认命名空间:
    @namespace "http://www.w3.org/1999/xhtml"; 
    @namespace svg "http://www.w3.org/2000/svg"; 
  3. 有了上面的声明。你就可以只为SVG原因应用CSS规则啦:
    svg|a { color: white; }

    而其他规则默认会应用到HTML上。

和HTML5一起使用
HTML5允许行内SVG和MathML,这就意味着,你可以使用同一个样式文件定义行内SVG、MathML元素的样式。

HTML5的解析的好处是,如果文档是HTML(而非XHTML),HTML5的解析器可以暗中分配命名空间到已知的词汇(到目前为止,SVG, XML和MathML)。这就意味着你无需使用xmlns为您的HTML5文档中的SVG或MathML元素明确指定命名空间。

下面变成引用是因为内容太老了,有必要更新下。

坏消息是目前貌似仅Firefox Nightlyabout:config上设置html5.enabled = true来解析和认知inline SVG或MathML.

这里有个demo页面,进去后会发现仅仅在火狐下左边是圆圆的,其他浏览器都是方的(包括Chrome浏览器):

上图中左边的SVG图片就是使用了SVG命名空间定义样式。

更新于2019-01-02

Chrome和Firefox浏览器均能很好的识别CSS命名空间。

您可以狠狠的点击这里:CSS namepace命名空间和SVG样式demo

相关CSS如下:

@namespace "http://www.w3.org/1999/xhtml";
@namespace svg "http://www.w3.org/2000/svg";
svg|a { color: darkslategray; fill: currentColor; }
a{color:blue;}

可以看到Chrome和Firefox浏览器下左侧圆角中的SVG图形的填充颜色为darkslategray,并不是蓝色blue,就是因为svg|a这里指定了命名空间,就svg命名空间下的a元素是darkslategray这个颜色。

a标签和SVG中a的颜色

参考文章
Spacing Out on CSS Namespaces

本文为原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
本文地址:http://www.zhangxinxu.com/wordpress/?p=2217

(本篇完)