CSS的隐藏特性[关闭]

Posted

技术标签:

【中文标题】CSS的隐藏特性[关闭]【英文标题】:Hidden features of CSS [closed] 【发布时间】:2010-10-12 07:41:24 【问题描述】:

我确实在关于 php 和 Xhtml隐藏特性风格问题中找到了一些有用的技巧。

所以这是一个涵盖 CSS 的内容。虽然很容易上手,但需要一点时间来了解所有内容、它们的默认行为、属性等

这里有一些开始球

@charset "UTF-8"; /* set the character set. must be first line as Gumbo points out in comments */

.element 
        /* takes precedence over other stylings */
        display: block !important;

        /* mozilla .... rounded corners with no images */
        -moz-border-radius: 10px; 

        /* webkit equivalent */
        -webkit-border-radius: 10px 

这些并没有那么多隐藏,但它们的使用并不经常广泛。您在 CSS 中发现了哪些技巧、窍门和稀有特性?

【问题讨论】:

为什么不添加border-radius: 10px;对于支持 CSS3 的浏览器? @Ólafur Waage:s/behaviour/behavior/ 是怎么回事?行为与行为一样正确,因为它是皇后区英语,所以更是如此。 @charset 规则必须在文件的第一行。 对于“隐藏功能”问题,接受的答案意味着什么?是不是最隐蔽的功能? @X-Istence - ahem 女王的英语(注意撇号) 【参考方案1】:

你可以显示文档的title元素:

head, title 
    display: block;

【讨论】:

这是独一无二的。我认为没有一个 元素是可渲染的。 奇怪的是,它也适用于 @Danko Durbić:当然,它们也只是 DOM 中的元素。 这是我非常喜欢的东西,.elbackground: red;position:absolute;top:0;left:0;right:0;bottom:0;【参考方案2】:

将多个样式/类应用于像 class="bold red GoldBg" 这样的元素

<html><head>
<style>
.bold font-weight:bold
.red color:red
.GoldBg background-color:gold
</style>
</head><body>
<p class="bold red GoldBg">Foo.Bar(red)</p>
</body></html>

【讨论】:

为什么我认为你只能用两个类来做到这一点..... 还要注意.bold.red .bold .red 之间的细微差别... 如果多个类具有冲突的属性(例如,如果 .red.GoldBg 都指定了 color 属性),则适用 CSS 特异性规则; class="..." 属性中的类顺序无关紧要。 请注意 IE6 不支持多个类,并且只会应用最后一个类 - 在本例中为 GoldBg。 但如果可以的话,尽量避免命名像“.red”这样的类。有一天,客户希望所有的红色文本都变成蓝色,而现在您已经让所有必须接触该代码的开发人员感到困惑。【参考方案3】:

我真的很喜欢 CSS 精灵。

您只需使用一张图片,每次都将其定位,以便只有您想要的部分可见,而不是为您的所有网站按钮和徽标提供 20 个图像(因此需要 20 个 http 请求,每个请求都有延迟)。

很难发布示例,因为您需要查看组件图像和展示位置 CSS - 但我已经在博客中记录了 Google 对它的使用:http://www.stevefenton.co.uk/Content/Blog/Date/200905/Blog/Google-Uses-Image-Sprites/

【讨论】:

您还可以将精灵用于 javascript 控制的动画。只需循环通过 setInterval 等上的精灵。 来自 Matthew Lock 的好建议 - 该建议的好处是您只需更改图像的位置,而不是图像的来源 - 因此整个动画不需要预加载设置。 jQuery UI 在他们的框架图标主题中使用了这个jqueryui.com/themeroller 与其说是一种功能,不如说是一种设计模式。【参考方案4】:

float父元素会导致它扩展以包含其所有floated 子元素。

【讨论】:

知道这个但非常方便。也不要忘记,如果这不是一个选项,你可以使用溢出属性而不诉诸丑陋的清除 div。 我不知道为什么每个人都使用带有 clear 的 div,我认为 br 是一个在语义上更相关的元素,我会认为带有 clear 的 br 不那么难看浮动一切,无论它是否需要它 @Matt 我相信使用overflow: hidden 更加语义化 - 为什么要引入一个仅用于修复布局的元素?【参考方案5】:

也许负边距相对定位元素中的绝对定位元素

有关示例,请参阅 How would YOU do this with CSS?。

【讨论】:

愿意解释一下吗?也请维基它【参考方案6】:

您可以通过同时指定leftright 属性来为绝对定位元素设置可变宽度。与简单地将 width 设置为百分比相比,这为您提供了更多的控制权。

例如:

#myElement 
    position: absolute;
    left: 5px;
    right: 10px;

另一个例子

#myElement /* fill up the whole space :) */
   background: red;
   position:absolute;
   left: 0;
   right:0;
   top: 0;
   bottom: 0;

【讨论】:

我不相信这在 IE 中有效。 我认为一直支持到 IE5.5 绝对位置永远不是灵活布局的首选。 并没有像您期望的那样工作;它也是地狱般的越野车。例如,IE6 会为之后的内容留下工件。 您可能需要将其放在relatively 定位的元素中。【参考方案7】:

看看 Webkit CSS Transformations,例如-webkit-transform: rotate(9deg);

【讨论】:

主流浏览器对这个有多少支持? @Shawn:基于 WebKit 的浏览器(Safari + Chrome)、Firefox 3.1+(我认为)和 Opera 10.5。所以它非常普遍,除了 IE——一如既往。 :) 您可以使用专有的 IE“过滤器:”进行转换,就像以前对透明 PNG 所做的那样。虽然 IE 变换/旋转参数需要一些基本的三角函数计算。标准令人讨厌的“过滤器:”错误仍然适用。 啊哈哈哈,刚刚旋转了这个文本块!玩得很尽兴。打算写一个greasemonkey脚本来惹人。【参考方案8】:

我的是:

azimuthpitch这样的听觉表的所有属性... 打印模块的一些属性,例如page-break-after: avoid; counter-increment: section 1; border-collapse: collapse; background-color: transparent; outline: 1px solid...

【讨论】:

【参考方案9】:

不是一个真正的功能,但仍然有用:子选择器适用于除 IE6 之外的所有浏览器,允许您在不使用黑客或条件样式表或使您的代码无效的情况下隔离 IE6。因此,以下代码中的链接在 IE6 中为红色,在其他浏览器中为蓝色。

CSS

/*Red for IE6*/
.link color:#F00;
/*Blue for everything else*/
#content>.link color:#00F;

HTML

<div id="content">
    <a class="link" href="#">Link</a>
</div>

这是list of selectors(用于 CSS2)和browser compatibility chart。

【讨论】:

我很确定子选择器是一项功能。 =] 它们是一项功能,但您可以使用它们来隔离 IE6 的事实更像是一种技巧。【参考方案10】:

上周我遇到了一个我从未听说过的非常有用的 CSS 属性:

text-rendering: optimizeLegibility;

Safari、Chrome 和 Firefox 都理解此属性,并在设置时启用高级字距调整和连字。这是一个很棒的demo。

【讨论】:

它让中文字符在某些浏览器/系统上看起来很糟糕 这是一个 SVG 属性,这些浏览器恰好支持 HTML 元素。【参考方案11】:

IE6 中的透明 PNG 这修复了 IE6 中的 PNG 透明度。将背景设置为非并将图像包含在过滤器中。不需要任何 javascript 或 htc。

.whatever 
   background: none; /* Hide the current background image so you can replace it with the filter*/
   width: 500px; /* Must specify width */
   height: 176px; /* Must specify height */
   filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='vehicles.png');

在元素之后设置分页行为 - 跨浏览器

table 
   page-break-after:always
 

您可以始终使用属性,避免、自动、左、右、固有。阅读文档http://www.w3schools.com/CSS/pr_print_pageba.asp

使用“Section 1”、“1.1”、“1.2”等对部分和子部分进行编号的方法 - 跨浏览器

h2:before 

   counter-increment:subsection;
   content:counter(section) "." counter(subsection) " ";

http://www.w3schools.com/CSS/pr_gen_counter-increment.asp

将表格边框折叠成单个边框或像标准 HTML 一样分离 - 跨浏览器

table

   border-collapse:collapse;

http://www.w3schools.com/css/pr_tab_border-collapse.asp

从按钮或输入字段中删除选择边框或虚线。还有其他很棒的用途 - 跨浏览器

button
   outline:0;

http://www.w3schools.com/CSS/pr_outline.asp

* IE6 中 100% 高度的 html

* html .move
   height:100%;

允许长字换行到下一行 - CSS3 Cross browser

.whatever 
   word-wrap:break-word;

http://www.w3schools.com/css3/css3_pr_word-wrap.asp

速记

之前

font-size: 1em;
line-height: 1.5em;
font-weight: bold;
font-style: italic;
font-family: serif 

之后

font: 1em/1.5em bold italic serif;

之前

background-color: #fff;
background-image: url(image.gif);
background-repeat: no-repeat;
background-position: top left;

之后

background: #fff url(image.gif) no-repeat top left;

之前

list-style: #fff;
list-style-type: disc;
list-style-position: outside;
list-style-image: url(image.gif) 

之后

list-style: disc outside url(something.gif);

之前

margin-top: 2px;
margin-right: 1px;
margin-bottom: 3px;
margin-left: 4px 

之后

margin:2px 1px 3px 4px; /*also works for padding*/
margin:0; /*You can also do this for all 0 borders*/
margin:2px 3px 5px; /*  you can do this for top 2px, left/right 3px, bottom 5px and ;    

【讨论】:

outline: 0; 不要这样做! outlinenone.com 每当我看到 w3schools 链接时,我都会畏缩【参考方案12】:

您可以使用 CSS 的溢出属性创建滚动区域,而无需借助框架。示例:

div.foo 
    border:   1px solid;
    width:    300px;
    height:   300px;
    overflow: auto;

overflow: auto 表示如果内容不适合 div,将根据需要显示水平和/或垂直滚动​​条。

overflow: scroll 表示两个滚动条都将始终存在。如果您只想始终显示一个滚动条,请使用 overflow-xoverflow-y(现代浏览器和 IE6 都支持)。

你们中的一些人可能在想“duuuh”,但我惊讶地发现滚动区域可以在没有框架的情况下创建。

【讨论】:

当心,我最近发现 iPad(可能还有 iPhone 和 iPod)不支持此功能,我的意思是它不显示滚动条并切断您的内容。 ios,或者更准确地说,移动 Safari 支持这一点就好了。但是,他们不做的是显示滚动条。你必须用两个手指滚动。所以,并不总是直观的。不知道为什么苹果会做出这个决定。 @John iOS 5 之前的版本让你用两根手指滚动溢出:滚动内容,但你可以使用iScroll 4 来解决这个问题。然而,iOS 5 不需要该脚本,而是在本地完成所有这些。广告@m【参考方案13】:

:before:after 伪元素

以下规则会导致在每个 H1 元素之前生成字符串“Chapter:”:

H1:before  
  content: "Chapter: ";
  display: inline;

更多信息,http://www.w3.org/TR/CSS2/generate.html

【讨论】:

【参考方案14】:

与其说是隐藏的功能,不如说是一个以CSS tips which every beginning developer should know about为特色的问题

【讨论】:

【参考方案15】:

内联块(浮动 div 的替代品):

.inline_block

    display:-moz-inline-box;
    display:inline-block;
  

不要将这个类应用到 div!它不起作用!将其应用于跨度(或内联元素)

<span class="inline_block">
</span>

【讨论】:

IE6 只支持内联元素,对吗? 不确定哪个浏览器支持或不支持 div,但这就是为什么我说它在 div 上不起作用! 为什么不支持div?一个 div 是一个带有 display: 块的 span(但可能有浏览器或作者样式表的额外样式)。 你不知道浏览器对我们有什么好处吗?它不适用于具有块显示、在线内联元素的元素。 @strager 虽然你是对的,但不要低估 IE 对标准的实施(或缺乏)【参考方案16】:

内联@media 分配:

/* Styles.css */
.foo  ... bar ... 
...
@media print
    .adsdisplay:none

这样您就可以摆脱另一个 HTTP 请求。

【讨论】:

【参考方案17】:

我们可以将样式标签显示为块元素并使用 HTML5 contenteditable 属性动态编辑 CSS。 Demo Here.

   <body>
       <style contenteditable>
           style 
            display: block;
           
           body 
            background: #FEA;
           

       </style>
   </body>

致谢:CSS-Tricks

【讨论】:

值得注意的是,这在 IE 中不起作用——参见:msdn.microsoft.com/en-us/library/ms537837(v=vs.85).aspx 我不会依赖它在任何地方工作。它是一种无效的 HTML,特别被黑客使用。【参考方案18】:

并不是真正的“隐藏”,但了解盒子模型和定位模型会有很大帮助。

例如,知道position: absolute 元素的定位相对于其第一个父元素,该父元素的样式为position: relative

【讨论】:

不,它是相对于最近的父级定位的,any 'position:' 不是默认值,'static' @Gareth - 几乎,“固定”也不算数 @annakata:你确定吗?我只是快速尝试了一下,绝对 div 位于它的父级内 - 一个固定的 div。我添加了另一个具有相同规格但没有父级的绝对 div(好吧,body 将是它的默认父级),并且它的位置与固定内部的不同 - 即它位于页面底部。所以我假设绝对内部固定的作品。【参考方案19】:

目前仅适用于 WebKit 但很有趣:CSS Animations

【讨论】:

【参考方案20】:

我从未想过使用 css 'border' 属性可以制作不同形状的三角形。这是链接,

(编辑) 以下链接不再起作用。 http://www.dinnermint.org/blog/css/creating-triangles-in-css/

从现在开始,您可以尝试以下方法, http://jonrohan.me/guide/css/creating-triangles-in-css/

【讨论】:

此链接已失效。 @GeorgeEdison:你是对的。我将尝试寻找替代来源来展示示例。【参考方案21】:

使用 css 可以轻松完成自动换行,无需任何服务器端技术的帮助。

word-wrap: break-word;

【讨论】:

【参考方案22】:

另一个 IE6 选择器

* html .something

  color:red;

修复随机 IE6 渲染错误 - 应用 zoom:1 将触发 layout。

【讨论】:

注意缩放不会验证...如果这对您很重要,请尝试 height: 1% 或类似触发 hasLayout【参考方案23】:

跨浏览器(IE6+、FF、Safari)float 替代方案:

.inline-block 
    display: inline-block;
    display: -moz-inline-box;
    -moz-box-orient: vertical;
    vertical-align: top;
    zoom: 1;
    *display: inline; 

【讨论】:

这仅适用于 IE6/7 中默认内联的元素,对吗? 在DIV上工作,这是一个块元素。【参考方案24】:

跨浏览器内联块使用组合声明处理块和内联元素:

.column  
-moz-inline-box; -moz-box-orient:vertical; display:inline-block; vertical-align:top; 
 

适用于标准浏览器,包括 Firefox 2,并且:

.ie_lte7 .column  display:inline;  

【讨论】:

【参考方案25】:

我不知道这是否是一个隐藏的功能,但我只是惊叹于看到这个: http://www.romancortes.com/blog/css-3d-meninas/

【讨论】:

【参考方案26】:
.class 
/* red for chrome, ff, safari, opera */
background-color: red;
/* green for IE6 */
.background-color: green;
/* blue for IE7+ */
_background-color: blue;

将使您的 背景在这些浏览器类别中有所不同

【讨论】:

浏览器破解 aern't 功能?哦,好吧,还是有用的! 最好使用条件注释quirksmode.org/css/condcom.html 为 IE6 和 IE7 添加单独的样式表,而不是依赖渲染引擎错误。 这是一个非常糟糕的做法。听@Tom ;) 浏览器黑客不是功能。它们是错误。 更好的是,使用 Paul Irish 的甜蜜方法:paulirish.com/2008/…【参考方案27】:

border-radius 是 CSS3 规范的一部分。由于 CSS3 还没有完全完成,因此更先进的浏览器同时使用自己的属性(-moz、-webkit)实现了其中的一部分。所以我们已经可以享受圆角,用纯 css 干净编码。

不幸的是,浏览器市场上的另一个大玩家仍然没有实现 css3 功能的迹象。

【讨论】:

以上是关于CSS的隐藏特性[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL的隐藏特性[关闭]

Ruby on Rails 的隐藏特性 [关闭]

css CSS - 关闭滚动而不隐藏滚动条

css 在博客上隐藏“评论关闭”的措辞。

CSS:如何隐藏这样的字段? [关闭]

CSS 论文:隐藏“评论关闭”