fail to change placeholder color with Bootstrap 3

前端 未结 10 828
暗喜
暗喜 2021-01-31 01:27

Two questions:

  1. I am trying to make the placeholder text white. But it doesn\'t work. I am using Bootstrap 3. JSFiddle demo

  2. Another question is h

相关标签:
10条回答
  • 2021-01-31 01:56

    With LESS the actual mixin is in vendor-prefixes.less

    .placeholder(@color: @input-color-placeholder) {
    ...
    }
    

    This mixin is called in forms.less on line 133:

    .placeholder();
    

    Your solution in LESS is:

    .placeholder(#fff);
    

    Imho the best way to go. Just use Winless or a composer compiler like Gulp/Grunt works, too and even better/faster.

    0 讨论(0)
  • 2021-01-31 01:59

    Bootstrap has 3 lines of CSS, within your bootstrap.css generated file that control the placeholder text color:

    .form-control::-moz-placeholder {
      color: #999999;
      opacity: 1;
    }
    .form-control:-ms-input-placeholder {
      color: #999999;
    }
    .form-control::-webkit-input-placeholder {
      color: #999999;
    }
    

    Now if you add this to your own CSS file it won't override bootstrap's because it is less specific. So assmuning your form inside a then add that to your CSS:

    form .form-control::-moz-placeholder {
      color: #fff;
      opacity: 1;
    }
    form .form-control:-ms-input-placeholder {
      color: #fff;
    }
    form .form-control::-webkit-input-placeholder {
      color: #fff;
    }
    

    Voila that will override bootstrap's CSS.

    0 讨论(0)
  • 2021-01-31 02:03

    Assign the placeholder to a class selector like this:

    .form-control::-webkit-input-placeholder { color: white; }  /* WebKit, Blink, Edge */
    .form-control:-moz-placeholder { color: white; }  /* Mozilla Firefox 4 to 18 */
    .form-control::-moz-placeholder { color: white; }  /* Mozilla Firefox 19+ */
    .form-control:-ms-input-placeholder { color: white; }  /* Internet Explorer 10-11 */
    .form-control::-ms-input-placeholder { color: white; }  /* Microsoft Edge */
    

    It will work then since a stronger selector was probably overriding your global. I'm on a tablet so i cant inspect and confirm which stronger selector it was :) But it does work I tried it in your fiddle.

    This also answers your second question. By assigning it to a class or id and giving an input only that class you can control what inputs to style.

    0 讨论(0)
  • 2021-01-31 02:03

    There was an issue posted here about this: https://github.com/twbs/bootstrap/issues/14107

    The issue was solved by this commit: https://github.com/twbs/bootstrap/commit/bd292ca3b89da982abf34473318c77ace3417fb5

    The solution therefore is to override it back to #999 and not white as suggested (and also overriding all bootstraps styles, not just for webkit-styles):

    .form-control::-moz-placeholder {
      color: #999;
    }
    .form-control:-ms-input-placeholder {
      color: #999;
    }
    .form-control::-webkit-input-placeholder {
      color: #999;
    }
    
    0 讨论(0)
提交回复
热议问题