2012-04-18 33 views
1

我有一类叫做字形的图像,它们通过我的网站出现。曾几何时,他们都被称为glyph。他们过去只出现在一个盒子里。该框是一个特定的大小,我使用了JavaScript方法来确保文本始终适合,字形总是与文本的其余部分高度相同。这很容易做到,由于我的样式表,这些字形开始时都是默认的。我应该如何处理这个C​​SS继承难题?

现在,我已决定每页包含多个包含可变数量文本的框。每个盒子的大小都是独立的我尝试了延迟大小调整例程,但这非常依赖用户的连接速度。如果我没有运行大小调整例程,那么事情看起来并不正确,所以我至少希望为所有内容选择默认的开始大小。当然,你不能用javascript来调整它的大小,直到它被加载。蛇吃尾巴。因此,基本上,现在我有多个盒子,每个字形都会得到一个类字形:1,glyph:2等。这个数字可以和我网站上用户提交的项目数量一样大。 CSS如何处理这个问题?据我所知,这些项目基本上需要两个类名。但我很确定这是不允许的。

我需要什么:设置以“字形:”开头的所有图像类1EM

这不存在,对不对?字形:*

另外,:在css类名中可能不好用,呵呵?

回答

4

不要使用:符号。你可以有一个以上的类的元素,以便做到像这样

<div class="glyph glyph-1">Foo</div> 
<div class="glyph glyph-2">Foo</div> 
<div class="glyph glyph-3">Foo</div> 
<div class="glyph glyph-4">Foo</div> 
+0

我从来没有见过这个,不会只是一个单一的类? – Kirk 2012-04-18 20:38:59

+1

不,任何元素都可以有多个类http://webdesign.about.com/od/css/qt/tipcssmulticlas.htm – user1289347 2012-04-18 20:42:42

+0

+1 @Kirk您可以通过选择两个类'.glyph来为特定元素添加样式。 glyph-4 {}'。 – iambriansreed 2012-04-18 20:54:13

1

CSS类名不能包含:符号。 :之后的所有内容都将被解释为伪类(如:hover),并且不会被正确解析。

至于你的课程,为什么他们都必须是独一无二的?类是作出一次选择多个元素,所以你可以这样做:

<div class="glyph">Foo</div> 
<div class="glyph">Foo</div> 
<div class="glyph">Foo</div> 
<div class="glyph">Foo</div> 

而且其全部选中了一个选择:

.glyph { 
    color: red; 
} 
+0

这是以前的样子,但我想从一个盒子中选择所有的元素。是否有一种方法可以在div上执行(getElementsByClassName),只能以文档方式返回子对象?我需要这些数字来判断每个东西属于哪个方块:请参阅http://gumonshoe.net/magic – Kirk 2012-04-18 20:34:12

+0

如果您可以选择该单独的方块并将其存储在变量中,那么getElementsByClassName仍然可以工作:document.getElementById('盒子 ')。getElementsByClassName方法(' 字形“)'。不过,使用jQuery会更容易。 – Blender 2012-04-18 20:39:04

+0

你可以使用冒号,但必须正确地逃避它们(如果你必须处理JSF创建的HTML垃圾,你将会学到这一点;) – 2012-04-18 20:54:04

2

正如其他人所说,你不应该使用在类名的冒号。连字符和破折号是唯一可以使用的标点符号。

可以在类中使用冒号并将它们转义到您的CSS代码中,但它变得非常混乱而且没有必要。其次(这是我会比其他答案更进一步的地方),如果你为你的元素生成独特的类名,那么你可能做错了什么。

id属性是给你的元素一个独特的名字; class旨在允许您将相同的类(或类)应用于多个元素,从而允许您将所有这些元素设置为相同。你可能已经知道了;我想我说的是,这听起来像你应该使用id而不是class

下一页:你说你很确定两个类名是不允许的,但实际上它是允许的。class="glyph bob"是完全可以允许的,你的元素将会从glyphbob类别中选取样式。只要你喜欢,你可以有多少班。但是,我仍然会说,如果你想给他们一个独特的名字,它应该是一个ID。

您还需要CSS语法来设置所有glyph*类。同样,你就错了:这句法确实存在,通过extended attr syntax

[class^="glyph"] { 
    /*styles here for classes beginning with 'glyph' 
} 

你谈谈延迟大小程序,并介绍了问题。对此的一个解决方案可能是让这些项目完全隐藏,直到浏览器完成了它们的外观。你甚至可以将它们淡入视野或使其看起来像故意的效果。

但毕竟,我仍然想知道为什么你要在图像中放置字形并独立调整大小?这一切听起来有点奇怪;你在问题中的描述让我想知道你想达到什么目的。

您是否考虑过使用可缩放图形(SVG/VML)或自定义字体作为字形而不是图像?如果您使用的是自定义字体,则可以简单地指定字体大小,并让浏览器全部处理。

希望其中的一些是有帮助的。

+0

不幸的是,每个盒子通常通常会有不止一个字形,因此无法轻松使用ID。当在php中创建东西时,我必须保留一个完整的关联数组,并将它传递给javascript以知道属于哪里。上面的班级解决方案是最好的。对于css,我只是一个不熟悉的东西。我想知道你的其他想法。如果你看看这个站点,一切都会有意义的:http://gumonshoe.net/magic – Kirk 2012-04-18 20:55:29

+0

@kirk:在外部容器元素上使用ID,然后在glyphs本身上只使用'class = glyph';在对样式中的字形进行样式设置时,仍然可以引用容器元素上的ID。 – Spudley 2012-04-18 21:01:58

+0

我认为这也可以。但是,正如我已经以其他方式完成的那样,我不打算再次尝试这样做......谢谢!夫妇的方式显然刮这只狮子狗。 – Kirk 2012-04-18 21:09:41