Css 是否可以创建内联伪样式?

Css 是否可以创建内联伪样式?,css,Css,是否可以创建内联伪样式 例如,我可以做如下的事情吗 <a href="#" style="background-color:green;{hover:background-color:red;}">Coding Horror</a> 这背后的原因是我正在开发一个创建UI元素的库。我想生成HTML元素,这些元素可以在不使用外部样式表的情况下设置悬停状态。不幸的是,不能使用内联CSS实现悬停效果 解决此问题的一个(糟糕的)方法是让控件在渲染样式块时进行渲染。例如,控件可

是否可以创建内联伪样式

例如,我可以做如下的事情吗

<a href="#" style="background-color:green;{hover:background-color:red;}">Coding Horror</a>


这背后的原因是我正在开发一个创建UI元素的库。我想生成HTML元素,这些元素可以在不使用外部样式表的情况下设置悬停状态。

不幸的是,不能使用内联CSS实现悬停效果

解决此问题的一个(糟糕的)方法是让控件在渲染样式块时进行渲染。例如,控件可以呈现为:

<style type="text/css">
    .custom-class { background-color:green; }
    .custom-class:hover { background-color:Red; }
</style>
<a href="#" class="custom-class">Coding Horror</a>

.custom类{背景色:绿色;}
.custom类:悬停{背景颜色:红色;}
如果您可以强制用户在页面顶部放置一个“样式控件”,那么您可以在那里呈现所有自定义类,而不是在每个控件旁边呈现它们,这将是一件非常非常糟糕的事情(浏览器在每次遇到样式块时都会重新启动渲染,在页面上散布大量样式块会导致渲染速度变慢)


不幸的是,这个问题没有优雅的解决方案。

或者您可以使用的函数设置背景色。

这是一种“第二十二条军规”

一方面,您可以在元素插入页面之前添加样式块,但Chris Pebble指出了其中的问题(如果您决定这样做,请确保为元素选择唯一的ID,这样您的选择器就不会意外地选择或设置任何其他样式)

另一方面,你可以这样做:

<a href="#" onmouseover="this.style.color=red;" onmouseout="this.style.color='blue';">...</a>

但是,这本身就很糟糕,因为它将标记、表示、行为和一大堆其他东西联系在一起

您还可以通过编写链接标记或操纵document.stylesheets将样式表注入页面,但这将触发下载

我通常看到第一种方法(添加样式块)是在大型“模块化”门户网站上实现的,因此它可能是事实上的标准(至少比在其中塞满JavaScript更可读,也更易于维护?)。JavaScript方法似乎对DOM和整个页面的影响最小,因为您要自己保存演示文稿


这是一种前端开发困境,您选择的每个答案在某种程度上都是错误的,因此请权衡各种选项,选择最容易构建和维护的选项。

在解析所有控件时,我会动态创建一个CSS文件,并向包含悬停或其他伪链接的控件添加服务器端属性屁股风格

<a style="color:blue" styleHover="color:blue" id="a1">Click!</a>

我不知道.NET是否允许您对属性进行这种类型的解析,但我在为php创建的框架中做了类似的事情。

有效地将伪选择器引入了内联样式。

@robbotic:假设他有一个函数foo(string u,string color1,string color2)哪种使用内嵌悬停样式的输出更简单。这是一个好主意吗?我更希望有这样一个包含样式的函数……但这迫使使用我的类的人自己使用css,这使得部署在短期内的工作稍微多一些。@Brian我尽可能避免使用内嵌样式。我知道设置css会更快p、 但是如果你需要在其他地方复制相同的样式,我想你会输的。我宁愿有一个大的CSS文件(或多个CSS文件)在我的网站上使用所有样式。这样我可以轻松访问我想要的任何样式,并且我可以在整个网站上进行一次更改并影响我想要的所有内容。这到底是为了什么?内联样式是对关注点分离的有害破坏。将其留给CSS。您可以使用javascript将伪样式注入到是的,我想你的最后一段总结了一下:)为什么这是一个“糟糕的”解决办法。。。css伪样式不正是存在的原因吗?
#a1:hover {
  color:blue
}