jQuery изменение цвета текста заполнителя
можно ли использовать ":: - webkit-input-placeholder " с jQuery для установки цвета для текста-заполнителя?
что-то вроде этого:
$("input::-webkit-input-placeholder").css({"color" : "#b2cde0"});
5 ответов
вы не можете изменить псевдо-селекторы с помощью JavaScript. Вам придется изменить существующий a <style>
элемент.
Если возможно, сделайте класс:
.your-class::-webkit-input-placeholder {
color: #b2cde0
}
и добавьте его в элемент:
$('input').addClass('your-class');
я использовал MaterializeCSS; я использовал Jquery для обновления CSS для полей ввода, подобных этому
$(".input-field").css("color", themeColor);
$(".input-field>.material-icons").css("color", themeColor);
$(".input-field>label").css("color", themeColor);
Посмотреть Результат:
вот пример динамической установки стилей псевдо-элементов с помощью jQuery-это вопрос создания <style>
элемент, устанавливая его текстовое содержимое в нужные объявления стиля и добавляя его в документ.
вот простой одностраничный пример:
<!doctype html>
<html>
<head>
<title>Dynamic Pseudo-element Styles</title>
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script>
$(document).ready(function() {
createStyles();
$('#slider-font-size').on('change', createStyles);
function createStyles() {
// remove previous styles
$('#ph-styles').remove();
// create a new <style> element, set its ID
var $style = $('<style>').attr('id', 'ph-styles');
// get the value of the font-size control
var fontSize = parseInt($('#slider-font-size').val(), 10);
// create the style string: it's the text node
// of our <style> element
$style.text(
'::placeholder { ' +
'font-family: "Times New Roman", serif;' +
'font-size: ' + fontSize + 'px;' +
'}');
// append it to the <head> of our document
$style.appendTo('head');
}
});
</script>
</head>
<body>
<form>
<!-- uses the ::placeholder pseudo-element style in modern Chrome/Firefox -->
<input type="text" placeholder="Placeholder text..."><br>
<!-- add a bit of dynamism: set the placeholder font size -->
<input id="slider-font-size" type="range" min="10" max="24">
</form>
</body>
</html>
Если вы нет стилей, и хотите ввести CSS динамически вы можете использовать следующие:
$('body').append('<style>.my_class::placeholder{color:red}</style>')
просто использовать my_class и цвета для заполнителя.
удобно иметь функцию общего назначения:
function change_placeholder_color(target_class, color_choice) {
$("body").append("<style>" + target_class + "::placeholder{color:" + color_choice + "}</style>")
}
использование:
change_placeholder_color('.my_input', 'red')
просто добавить это. Он унаследует цвет во входных данных[type=text]: focus new color
.your-class ::placeholder{ color: inherit;}