gpt4 book ai didi

javascript - 将类添加到在单击时应用渐变的 div 仅在第一次工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:55 24 4
gpt4 key购买 nike

我有一个表单,其中包含几个单选按钮和一个文本输入框。使用 JavaScript,我在单击时将背景渐变应用于文本字段包装器,并在单击单选按钮时将其删除。当我点击文本输入时,会应用一个通过 css 渐变的类,当我点击单选按钮时,它会被删除,但是当我重新点击文本输入时,渐变不会再次应用。为什么?旁注,每次都会应用和删除边框......只是不是渐变。

<input type="radio" id="radio1" name="radios" >
<input type="radio" id="radio2" name="radios" >
<div id="textInputWrapper">
<input type="text" id="textInput">
</div>
<script>
$('input[type=radio]').click(function () {
$('#textInputWrapper').css('background', ' #17a2dc');
$('#textInputWrapper label').css('color', 'white');
$('#textInputWrapper').removeClass('gradient');
});
$('#textInput').click(function () {
$('#textInputWrapper label').css('color', '#606060');
$('#textInputWrapper').addClass('gradient');
});
</script>
<style>
.gradient {
background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(188,188,188,1) 52%, rgba(126,126,126,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(52%,rgba(188,188,188,1)), color-stop(100%,rgba(126,126,126,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#7e7e7e',GradientType=0 ); /* IE6-9 */
border:7px white solid;
}
#textInputWrapper {
width:100%;
}
</style>

最佳答案

这一行是你的问题:

$('#textInputWrapper').css('background', ' #17a2dc');

单击单选按钮后,此行将添加内联 CSS,这将覆盖与 .gradient 类关联的样式。而是尝试像这样修改 #textInputWrapper CSS:

#textInputWrapper:not(.gradient) {
width:100%;
background: #17a2dc;
}

/* Move the gradient style declaration after the #textInputWrapper declaration */
.gradient {
background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(188,188,188,1) 52%, rgba(126,126,126,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(52%,rgba(188,188,188,1)), color-stop(100%,rgba(126,126,126,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(188,188,188,1) 52%,rgba(126,126,126,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#7e7e7e',GradientType=0 ); /* IE6-9 */
border:7px white solid;
}

基本上,保持您的 CSS 隔离,以便添加和删除 .gradient 类是触发 UI 更改的唯一因素。

这是一个 jsfiddle example

关于javascript - 将类添加到在单击时应用渐变的 div 仅在第一次工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com