Chrome支持input[type=text]元素的占位符属性(其他元素可能也支持)。

但以下CSS对占位符的值没有任何作用:

输入[占位符]、[占位符],*[占位符]{颜色:红色!重要的}<input-type=“text”placeholder=“Value”>

但Value仍将保持灰色而不是红色。

是否有方法更改占位符文本的颜色?


当前回答

这个怎么样

<input type=“text”value=“placeholder text”onfocus=“this.style.color='#000';this.value=“”;“style=”颜色:#f00;" />

没有CSS或占位符,但您可以获得相同的功能。

其他回答

对于Sass用户:

// Create placeholder mixin
@mixin placeholder($color, $size:"") {
  &::-webkit-input-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &:-moz-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &::-moz-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &:-ms-input-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
}

// Use placeholder mixin (the size parameter is optional)
[placeholder] {
  @include placeholder(red, 10px);
}

添加一个非常简单的可能性:CSS过滤器!

它将设置所有内容的样式,包括占位符。

下面将在同一调色板上设置两个输入元素,使用色调过滤器进行颜色更改。它现在在浏览器中呈现得很好(除了…)

输入{滤镜:棕褐色(100%)饱和(400%)灰度(0)对比度(200%)色调旋转(68deg)反转(18%);}<input placeholder=“Hello world!”/><input-type=“date”/><br><输入类型=“范围”/><input-type=“color”/>

要允许用户使用输入类型颜色进行动态更改,或查找细微差别,请查看以下片段:

发件人:Codepen

函数stylElem(){stylo.dataset.hue=((parseInt(stylo.value.substring(1),16))/46666).toFixed(0)Array.from(document.querySelectorAll('输入,音频,视频')).forEach(函数(e){e.style.cssText+=“;滤镜:棕褐色(100%)饱和(400%)灰度(0)对比度(200%)色调旋转(”+styl.dataset.hue+“deg)反转(”+(styl.ddataset.hue/3.6)+“%)”out.innerText=e.style.css文本})()}stylElem()正文{背景:黑色;颜色:白色}选择颜色!<input type=“color”id=“stylo”oninput=“stylElem()”><br><div id=“out”></div><p><input placeholder=“Hello world!”/><input-type=“date”/><br><输入类型=“范围”/><br><音频控件src=“#”></audio><br><br><视频控件src=“#”></video>

Css过滤器文档:https://developer.mozilla.org/en-US/docs/Web/CSS/filter

这对大多数现代浏览器都很好

input::placeholder{
  color: red; // css implementation
}

以防万一,如果您正在使用SCSS

input {
  &::placeholder {
    color: red; // scss
  }
}

跨浏览器解决方案:

/* all elements */
::-webkit-input-placeholder { color:#f00; }
::-moz-placeholder { color:#f00; } /* firefox 19+ */
:-ms-input-placeholder { color:#f00; } /* ie */
input:-moz-placeholder { color:#f00; }

/* individual elements: webkit */
#field2::-webkit-input-placeholder { color:#00f; }
#field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

/* individual elements: mozilla */
#field2::-moz-placeholder { color:#00f; }
#field3::-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

资料来源:David Walsh

我不记得我在哪里找到了这个代码片段(它不是我写的,不记得我是在哪里找到的,也不记得是谁写的)。

$('[placeholder]').focus(function() {
        var input = $(this);
        if (input.val() == input.attr('placeholder')) {
            input.val('');
            input.removeClass('placeholder');
        }
    }).blur(function() {
        var input = $(this);
        if (input.val() == '' || input.val() == input.attr('placeholder')) {
            input.addClass('placeholder');
            input.val(input.attr('placeholder'));
        }
    }).blur();
    $('[placeholder]').parents('form').submit(function() {
        $(this).find('[placeholder]').each(function() {
            var input = $(this);
            if (input.val() == input.attr('placeholder')) {
                input.val('');
            }
        })
    });

只需加载此JavaScript代码,然后通过调用以下规则使用CSS编辑占位符:

form .placeholder {
   color: #222;
   font-size: 25px;
   /* etc. */
}