I have your basic input with a placeholder. I have the placeholder text color as a light gray. However, when I click inside the input and type something, the color stays the same. Is there a way I can change the color of the text when something is type and when it is not typed?
<input type="text" placeholder="Your Name">
Unfortunately there is no native way just yet to do this that covers all the browsers. You can use vendor specific css rules however as seen in this jsfiddle.
::-webkit-input-placeholder {
color: red;
}
:-moz-placeholder { /* Firefox 18- */
color: red;
}
::-moz-placeholder { /* Firefox 19+ */
color: red;
}
:-ms-input-placeholder {
color: red;
}
Related
This question already has answers here:
Change a HTML5 input's placeholder color with CSS
(43 answers)
Closed 2 years ago.
As per an answer to a stackoverflow question. I added a placeholder to html select element.
<option value="" selected disabled hidden><strong style="color:white">Choose here</strong></option>
Now the problem is, I want to change the color of placeholder text to white as my background is gray. It's not accepting any styling.
You can use ::placeholder pseudo in CSS, like this example:
::placeholder { color: #fff; }
If you want a cross-browser solution, you can use prefixes:
::-webkit-input-placeholder { /* Chrome/Opera/Safari */
color: #fff;
}
::-moz-placeholder { /* Firefox 19+ */
color: #fff;
}
:-ms-input-placeholder { /* IE 10+ */
color: #fff;
}
:-moz-placeholder { /* Firefox 18- */
color: #fff;
}
The ::placeholder selector only selects the placeholder text inside your input, besides that, you can style the input itself when it is showing the placeholder using :placeholder-show.
Also, be aware that Firefox might show placeholder text lighter than it is supposed to display. to fix the issue you can use:
::-moz-placeholder {
opacity: 1;
}
is it googles material design ?
if its google material design i find that this answer is your solution i dont want to take credit of someone else afford so there is the link click here
if its not material design anyway did you try this?
::placeholder {
color: white;
}
its called pseudo\elements
you can read abut them here
the example that i wrote is taken from here
CSS
input[type=text] {font-size:1.5em;}
HTML
<input type="text" placeholder="some text">
The CSS code makes 1.5em size for data, which is entered in the text box. But this code also changes size of placeholder text. How to prevent CSS from changing placeholder text's size?
I want CSS to, only change size of original data, which entered by my website visitors.
Reset the values with ::placeholder pseudo
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
font-size: 0.5em;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
font-size: 0.5em;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
font-size: 0.5em;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
font-size: 0.5em;
}
::-ms-input-placeholder { /* Microsoft Edge */
font-size: 0.5em;
}
<input type="text" placeholder="some text">
Credits: Change an HTML5 input's placeholder color with CSS
On wiki page of text-angular github project, it says:
https://github.com/fraywing/textAngular/wiki/Styling-the-Editor
I tried with this code:
<div text-angular="text-angular" ta-toolbar="[]" ng-model="message"
placeholder="<div class='placeholder'>Write Coment...</div>"></div>
But the screen will show as:
placeholder show as raw html
I tried the following after taking a look at this website: https://css-tricks.com/almanac/selectors/p/placeholder/
::-webkit-input-placeholder { color: red; }
It still didn't work. How can I give custom styles to my input placeholder?
placeholders should be used with input elements and not on divs. You'd probably have to change your div tags to inputs.
You had the right idea about styling a placeholder, but you may need to adjust the vendor prefixes depending on your browser
Chrome, Safari, Opera, Edge): ::-webkit-input-placeholder
Firefox 4 through 18: :-moz-placeholder (Only one colon)
Firefox 19+: ::-moz-placeholder (two colons)
IE 10 and IE 11 :-ms-input-placeholder
/* Chrome, Safari, Opera and Edge */
::-webkit-input-placeholder { color: red; }
/* Firefox 4 through 18 */
:-moz-input-placeholder { color: red; }
/* Firefox 19+ */
::-moz-input-placeholder { color: red; }
/* IE10 and IE11 */
:-ms-input-placeholder { color: red; }
<input placeholder="Content here" />
Another thing you could try is to attach a contenteditable property to your div which will make it behave kind of like an input element. You can then set a data property to simulate the behavior of a placeholder.
Use the before pseudo selector which will target the div only when it's empty and not focused on.
[contenteditable=true]:empty:not(:focus):before{
content:attr(data-text);
color: red;
}
div {
border: 1px solid black;
}
<div contenteditable="true" data-text="Enter text here"></div>
I found a way myself.. To let the Answer part standing out to other similar questions, I choose to post answer here instead of editing original question.
Use .placeholder-text class. It's not a customized class but it's the temporary class used by text-angular when it is displaying placeholder.
.ta-bind {
&.placeholder-text {
color: red;
}
&:not(.placeholder-text) {
color: black;
}
}
( Example is in scss, remember to covert if you are using css)
everyone!
[edit]
Take a look at the fiddle I created, it looks like inside footer element placeholder styling is not working. Any idea how to overcome this?
I tried to use:
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: #3d3d3d!important;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #3d3d3d!important;
opacity: 1!important;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #3d3d3d!important;
opacity: 1!important;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: #3d3d3d!important;
}
:placeholder-shown { /* Standard (https://drafts.csswg.org/selectors-4/#placeholder) */
color: #3d3d3d!important;
}
as well as:
footer::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: #3d3d3d!important;
}
and it didn't help.
Keep in mind I want a separate color for placeholder text and for input text typed by the user.
Any idea where to start?
OK, it was really stupid one. There was a javascript added to input element:
<input type="text" name="woochimp_widget_subscription[email]" id="woochimp_widget_subscription_email" class="woochimp_widget_field" required="" value="Enter your email..." onfocus="this.value='';" onblur="if(this.value=='')this.value='Enter your email...';" />
after removing the js code and adding placeholderattribute:
<input type="text" name="woochimp_widget_subscription[email]" id="woochimp_widget_subscription_email" class="woochimp_widget_field" required="" value="Enter your email..." placeholder="Enter you email..." />
it started to work just nice.
Thank you All for your help!
It may not make a difference, but try moving the comments so that they fall outside the style declarations.
Also, don't forget to include:
::-ms-input-placeholder {color: #3d3d3d;} /* Edge */
Full styles:
::-webkit-input-placeholder {color: #3d3d3d;} /* WebKit, Blink and Opera */
:-moz-placeholder {color: #3d3d3d; opacity: 1;} /* Mozilla Firefox 4 to 18 */
::-moz-placeholder {color: #3d3d3d; opacity: 1;} /* Mozilla Firefox 19+ */
:-ms-input-placeholder {color: #3d3d3d;} /* Internet Explorer 10-11 */
::-ms-input-placeholder {color: #3d3d3d;} /* Edge */
:placeholder-shown {color: #3d3d3d;} /* CSS Level 4 Selector */
#coupon_code::-moz-placeholder {
color: #d3d3d3!important;
opacity: 1!important;
}
i have change above css line in your fiddle, hope this will help you.
I am trying to make the placeholder text look exactly like the actual text being entered into the form field.
The first field is showing placeholder text. Looks like gray text.
The second field is showing text entered into the field. Looks more black.
Here is the html code:
<p>Twitter Link</p>
<input type="text" placeholder="http://twitter.com" />
<p>Google+ Link</p>
<input type="text" placeholder="" />
and css code:
::-webkit-input-placeholder {color: #000;}
:-moz-input-placeholder {color: #000;}
::-moz-input-placeholder {color: #000;}
input::-moz-placeholder {color: 000;}
I am mostly having trouble in firefox.
One problem is you forgot the hashtag(#) in front of the colorcode:
input::-moz-placeholder
{color: 000;}
Since it was the lowest in the CSS, it probably was overriding the previous styles:
input::-moz-placeholder
{color: #000;}
Also, it seems for placeholders, there are quite a bit of CSS to make it cross browser:
::-webkit-input-placeholder { /* WebKit browsers */
color: #000;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #000;
opacity: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #000;
opacity: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #000;
}
Be careful to avoid bad contrasts. Firefox's placeholder appears to be defaulting with a reduced opacity, so needs to use opacity: 1 here.
This code and quote comes from this excellent SO answer
JSFiddle Demo
Try this:
HTML:
<input type="text" placeholder="http://twitter.com" />
CSS:
input::-webkit-input-placeholder {
color: #000;
}
Here is a jsfiddle with above codes: https://jsfiddle.net/e0d8my79/49/