Html 如何使用 CSS 设置只读属性的样式?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/9635293/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-28 23:01:07  来源:igfitidea点击:

How to style readonly attribute with CSS?

htmlcsscss-selectors

提问by Daphne

I'm currently using readonly="readonly" to disable fields. I'm now trying to style the attribute using CSS. I've tried using

我目前正在使用 readonly="readonly" 来禁用字段。我现在正在尝试使用 CSS 设置属性的样式。我试过使用

input[readonly] {
/*styling info here*/
}

but it is not working for some reason. I've also tried

但由于某种原因它不起作用。我也试过

input[readonly='readonly'] {
/*styling info here*/
}

that doesn't work either.

那也不行。

How can I style the readonly attribute with CSS?

如何使用 CSS 设置 readonly 属性的样式?

回答by kaka

Note that textarea[readonly="readonly"]works if you set readonly="readonly"in HTML but it does NOT work if you set the readOnly-attribute to trueor "readonly"via JavaScript.

请注意,textarea[readonly="readonly"]如果您readonly="readonly"在 HTML 中设置它有效,但如果您将readOnly-attribute设置为true"readonly"通过 JavaScript则它不起作用。

For the CSS selector to work if you set readOnlywith JavaScriptyou have to use the selector textarea[readonly].

如果您readOnly使用 JavaScript 进行设置,则要使 CSS 选择器工作您必须使用选择器textarea[readonly]

Same behavior in Firefox 14 and Chrome 20.

Firefox 14 和 Chrome 20 中的行为相同。

To be on the safe side, i use both selectors.

为了安全起见,我使用了两个选择器。

textarea[readonly="readonly"], textarea[readonly] {
...
}

回答by Luke

To be safe you may want to use both...

为了安全起见,您可能想同时使用两者...

input[readonly], input[readonly="readonly"] {
    /*styling info here*/
}

The readonly attribute is a "boolean attribute", which can be either blank or "readonly" (the only valid values). http://www.whatwg.org/specs/web-apps/current-work/#boolean-attribute

readonly 属性是一个“布尔属性”,它可以是空白或“只读”(唯一的有效值)。http://www.whatwg.org/specs/web-apps/current-work/#boolean-attribute

If you are using something like jQuery's .prop('readonly', true)function, you'll end up needing [readonly], whereas if you are using .attr("readonly", "readonly")then you'll need [readonly="readonly"].

如果您使用的是 jQuery.prop('readonly', true)函数之类的东西,您最终将需要[readonly],而如果您正在使用,.attr("readonly", "readonly")那么您将需要[readonly="readonly"].



Correction:You only need to use input[readonly]. Including input[readonly="readonly"]is redundant. See https://stackoverflow.com/a/19645203/1766230

更正:您只需要使用input[readonly]. 包括input[readonly="readonly"]是多余的。见https://stackoverflow.com/a/19645203/1766230

回答by IAmNaN

Loads of answers here, but haven't seen the one I use:

这里有很多答案,但还没有看到我使用的答案:

input[type="text"]:read-only { color: blue; }

Note the dash in the pseudo selector. If the input is readonly="false"it'll catch that too since this selector catches the presence of readonly regardless of the value. Technically falseis invalid according to specs, but the internet is not a perfect world. If you need to cover that case, you can do this:

注意伪选择器中的破折号。如果输入是readonly="false"它也会捕获它,因为这个选择器会捕获 readonly 的存在,而不管值如何。false根据规范,技术上是无效的,但互联网并不是一个完美的世界。如果您需要涵盖这种情况,您可以这样做:

input[type="text"]:read-only:not([read-only="false"]) { color: blue; }

textareaworks the same way:

textarea工作方式相同:

textarea:read-only:not([read-only="false"]) { color: blue; }

Keep in mind that html now supports not only type="text", but a slew of other textual types such a number, tel, email, date, time, url, etc. Each would need to be added to the selector.

请记住,html 现在不仅支持type="text",而且还支持大量其他文本类型,例如number, tel, email, date, time, url, 等。每个都需要添加到选择器中。

回答by Matthew Campbell

There are a few ways to do this.

有几种方法可以做到这一点。

The first is the most widely used. It works on all major browsers.

第一种是使用最广泛的。它适用于所有主要浏览器。

input[readonly] {
 background-color: #dddddd;
}

While the one above will select all inputs with readonlyattached, this one below will select only what you desire. Make sure to replace demowith whatever input type you want.

虽然上面的将选择所有带有readonly附加的输入,但下面的将仅选择您想要的。确保替换demo为您想要的任何输入类型。

input[type="demo"]:read-only {
 background-color: #dddddd;
}

This is an alternate to the first, but it's not used a whole lot:

这是第一个的替代,但它没有被大量使用:

input:read-only {
 background-color: #dddddd;
}

The :read-onlyselector is supported in Chrome, Opera, and Safari. Firefox uses :-moz-read-only. IE doesn't support the :read-onlyselector.

:read-only选择器在Chrome,Opera和Safari浏览器的支持。Firefox 使用:-moz-read-only. IE 不支持:read-only选择器。

You can also use input[readonly="readonly"], but this is pretty much the same as input[readonly], from my experience.

您也可以使用input[readonly="readonly"],但input[readonly]根据我的经验,这与,几乎相同。

回答by Serge

input[readonly], input:read-only {
    /* styling info here */
}

Shoud cover all the casesfor a readonly input field...

应该涵盖只读输入字段的所有情况...

回答by u8670799

capitalize the first letter of Only

将 Only 的第一个字母大写

input[readOnly] {
      background: red !important;
    }
<input type="text" name="country" value="China" readonly="readonly" />

回答by softwareplay

If you select the input by the id and then add the input[readonly="readonly"]tag in the css, something like:

如果通过id选择输入,然后input[readonly="readonly"]在css中添加标签,类似于:

 #inputID input[readonly="readonly"] {
     background-color: #000000;
 }

That will not work. You have to select a parent class or id an then the input. Something like:

那不管用。您必须选择一个父类或 id 然后输入。就像是:

 .parentClass, #parentID input[readonly="readonly"] {
     background-color: #000000;
 }

My 2 cents while waiting for new tickets at work :D

我在工作中等待新票时的 2 美分 :D

回答by Pal R

Use the following to work in all browsers:

使用以下内容在所有浏览器中工作:

 var readOnlyAttr = $('.textBoxClass').attr('readonly');
    if (typeof readOnlyAttr !== 'undefined' && readOnlyAttr !== false) {
        $('.textBoxClass').addClass('locked');
    }