代码之家  ›  专栏  ›  技术社区  ›  Giffyguy

如何从父元素的样式属性中设置子元素的CSS样式?

  •  1
  • Giffyguy  · 技术社区  · 15 年前

    例子:

    <div style="SET IMAGE ATTRIBUTES HERE!">
        <img src="http://somesite.com/someimg.jpg"><br />
        <img src="http://someothersite.com/someotherimg.jpg"><br />
        ...
    </div>
    

    由于动态ASP.NET代码生成的结构,我宁愿避免使用预定义的CSS类。这些属性因网络控件而异,不能在 <head> <body> 部分。例如,我可能在一个页面上有两个webcontrol,每个都为其所有子图像设置了不同的CSS属性。

    最后,我可以为这些控件拼凑一个动态CSS类生成器,但这将是一个巨大的痛苦,结果非常草率。也就是说,每个webcontrol都会生成自己的CSS类,并将其写入 head body 以某种方式分区,同时确保多个网络控件的CSS类不使用相同的名称。就像我说的,一个巨大的草率的混乱-因此我希望能够将所有这些信息塞进各个控件的属性标记中,这样它们就不会互相攻击了。

    5 回复  |  直到 11 年前
        1
  •  3
  •   Piskvor left the building Rohit Kumar    15 年前

    你能做这样的东西吗:

     <div id="yourcontrol_1">
        <img src="/some/image.jpg">
     </div>
    

    然后在样式表中定义样式-不是内联的:

    #yourcontrol_1 img {
        border: 20px double red;
    } 
    

    这样,无论您指定什么,都只适用于 img 是id的子项的标记 yourcontrol_1 .

    这种级别的控制对于内联样式是不可能的,IIRC。

    如果您无法预先确定类名/id,您仍然可以生成它们,并使用 style 标签。就像你说的:不漂亮,但会有用的。

    <html>
      <head>
         <style>
           #generated_identifier_0xcafe img {
              padding: 200em;
           }
           #generated_identifier_0xbeef img {
              background-color: green;
           }
         </style>
       </head>
       <body>
         <div id="generated_identifier_0xcafe">
             <img src="someimage.png">
         </div>
       <!-- etc... -->
    
        2
  •  4
  •   Quentin    15 年前

    简而言之,你不能。

    样式元素的值完全等同于具有与元素匹配的选择器的规则集(具有更高的特定性的除外)。

    要将属性的值分配给其中的元素,唯一的方法是该元素是否具有规则 whatever-property-it-is: inherit (这是旧版IE中的buggy)。

        3
  •  2
  •   Orbling    15 年前

    你不需要上课来做你想做的事,只要把 style 图像本身的属性。

    <div>
        <img src="http://somesite.com/someimg.jpg" style="image styles here!"><br />
        <img src="http://someothersite.com/someotherimg.jpg" style="image styles here!"><br />
        ...
    </div>
    
        4
  •  1
  •   Damien    15 年前

    这是不可能的。使用内联CSS,您只能为当前元素设置样式。

        5
  •  0
  •   Noumenon    10 年前

    HTML5引入了一个实验 scoped 样式标记的属性,它将完全执行您所需的操作:

    <div>
       <style scoped>img { border: 20px double red; }</style>
       <!-- style applies to this div and its children only -->
    

    它被标记为“尚未准备好生产代码”,但它在Firefox、Chrome和Edge中工作,我刚刚做了一个简单的测试。 HTML Doctor 列出几个有效的用例,例如主题化插件和wiki代码上的用户定义样式。