之后添加带有css伪元素的onclick

发布于 2024-12-18 22:46:15 字数 186 浏览 0 评论 0原文

我的 css 文件中是否可以执行类似的操作?:

.myclass:after{
   content:"click me";
   onclick:"my_function()";
 }

我想在 css 样式表中的 myclass 的所有实例之后添加可单击的文本。

Is it possible in my css file to do something like that?:

.myclass:after{
   content:"click me";
   onclick:"my_function()";
 }

I want to add after all instances of myclass a clickable text, in the css style sheet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

古镇旧梦 2024-12-25 22:46:15

是否可以在我的 css 文件中执行类似[参见上面的代码]的操作?

要问的重要问题是为什么

HTML 可以控制网页内的数据。任何 CSS 或 JS 都是通过 HTML 指定的。这是模型

CSS 可以控制样式,CSS 和 HTML 或 JavaScript 之间没有链接。这是视图

JavaScript 可以控制网页内的交互,并且可以连接到所有 DOM 节点。这是控制器

由于这种 MVC 结构:HTML 属于 .html 文件,CSS 属于 .css 文件,JS 属于 .js 文件。

CSS 伪元素不会创建 DOM 节点。 JavaScript 没有直接的方法来访问 CSS 中定义的伪元素,也没有办法将事件附加到所述伪元素。

如果您已经设置了适当的结构,并且无法添加在 HTML 中生成新链接所需的附加内容,则 JavaScript 可以动态添加必要的新元素,然后可以通过 CSS 设置样式。

jQuery 使这变得非常简单:

$('<span class="click-me">click me</span>').appendTo('.myclass').click(my_function);

Is it possible in my css file to do something like [see code above]?

No

The important question to ask is why.

HTML has control of the data within the webpage. Any CSS or JS is specified via the HTML. It's the Model.

CSS has control of the styles, there is no link between CSS and HTML or JavaScript. It's the View.

JavaScript has control of the interactions within the webpage, and has hooks to any and all DOM nodes. It's the Controller.

Because of this MVC structure: HTML belongs in .html files, CSS belongs in .css files, and JS belongs in .js files.

CSS pseudo-elements do not create DOM nodes. There is no direct way for JavaScript to access a pseudo-element defined in CSS, and there's no way to attach an event to said pseudo-elements.

If you've got a set structure in place, and can't add the additional content necessary to produce new links within the HTML, JavaScript can dynamically add the new elements necessary which can then be styled via CSS.

jQuery makes this very simple:

$('<span class="click-me">click me</span>').appendTo('.myclass').click(my_function);
海风掠过北极光 2024-12-25 22:46:15

好吧,

使用 表达式 实际上可能仅适用于 Internet Explorer。

否则:

不。完全不,这不是 css 的目的和目的。

Well,

using expression it might actually be possible for internet explorer only.

Otherwise:

No. Not at all, that's not what css is made and intended for.

﹏雨一样淡蓝的深情 2024-12-25 22:46:15

如果某些事情可以用 jQuery 完成,那么毫无疑问,不用 jQuery 也可以完成。让我们看一个数据模型:

<div id="container">
<div id="hasblock" onclick='clickFunc(this, event)'></div>
</div>

我们需要一些样式表:

<style>
div#container { width:100px; height:50px;position relative; border:none;}
div#hasblock {width:100px; height:50px;position absolute;border:solid black;}
div#hasblock::after {content:"Click me"; position: absolute; border:solid red;
top:80px;left:0px;display:block;width:100px;height:20px; font-size:18px;}
</style>

和代码:

<script>
function clickFunc(his, event)
{if (event.clientY>his.clientHeight){console.log("It was a click");};    }
</script>

If something can be done with jQuery, then it is sure that it is possible to do it without that. Lets see a data model:

<div id="container">
<div id="hasblock" onclick='clickFunc(this, event)'></div>
</div>

We need some stylesheet:

<style>
div#container { width:100px; height:50px;position relative; border:none;}
div#hasblock {width:100px; height:50px;position absolute;border:solid black;}
div#hasblock::after {content:"Click me"; position: absolute; border:solid red;
top:80px;left:0px;display:block;width:100px;height:20px; font-size:18px;}
</style>

And a code:

<script>
function clickFunc(his, event)
{if (event.clientY>his.clientHeight){console.log("It was a click");};    }
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文