【发布时间】:2020-05-12 15:52:12
【问题描述】:
我正在尝试将自定义 CSS transition 添加到我现有的基于 Bootstrap 3 的项目中。一个简单的 flex 容器,它包含一个值 input 和一个 select 字段。 jQuery 用于在选择第一个 select 值时将 .hidden 类添加到 input 字段。此类更改 input 字段的 flex-base 属性,该字段应使用转换隐藏。当挑选另一个值时,该字段再次显示。
当我使用一个简单的测试 HTML 文件时,一切正常。但是只要我在标题中添加bootstrap.css 链接,转换就不再起作用了。 select 字段仍然隐藏/显示,但没有过渡。
我怎样才能找出 bootstrap.css 的哪一部分负责并解决这个问题?我已经花了几个小时挖掘引导文件,但到目前为止没有任何成功。
从以下示例中的选择字段中选择值 A 以查看问题...
工作小提琴:https://jsfiddle.net/gd03sjtn
使用 Bootstrap(不起作用):https://jsfiddle.net/gd03sjtn/1
两个 sn-ps 演示它工作/不工作(被引导 css 阻止)
$(function() {
var $typeSelect = $('#typeSelect');
var $valueSpinner = $('#valueInput');
$typeSelect.change(function() {
if ($typeSelect.val() == "0") {
$typeSelect.addClass('red');
$valueSpinner.parent().addClass('hidden');
} else {
$typeSelect.removeClass('red');
$valueSpinner.parent().removeClass('hidden');
}
});
});
.container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
.container select {
flex-grow: 10;
}
.container select.red {
background: red;
}
.container .spinner {
flex-grow: 0;
flex-basis: 30%;
transition: flex-basis 500ms ease-in-out;
}
.container .spinner.hidden {
flex-basis: 0%;
}
.container .spinner input.valueInput {
width: 100%;
}
<!-- Remove Bootstrap.css to make this working -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div class="container">
<span class="spinner">
<input id="valueInput" value="205" class="valueInput">
</span>
<select id="typeSelect">
<option value="0">A</option>
<option value="1">B</option>
<option value="2">C</option>
<option value="3" selected="selected">D</option>
<option value="4">E</option>
</select>
</div>
$(function() {
var $typeSelect = $('#typeSelect');
var $valueSpinner = $('#valueInput');
$typeSelect.change(function() {
if ($typeSelect.val() == "0") {
$typeSelect.addClass('red');
$valueSpinner.parent().addClass('hidden');
} else {
$typeSelect.removeClass('red');
$valueSpinner.parent().removeClass('hidden');
}
});
});
.container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
.container select {
flex-grow: 10;
}
.container select.red {
background: red;
}
.container .spinner {
flex-grow: 0;
flex-basis: 30%;
transition: flex-basis 500ms ease-in-out;
}
.container .spinner.hidden {
flex-basis: 0%;
}
.container .spinner input.valueInput {
width: 100%;
}
<!-- Remove Bootstrap.css to make this working -->
<!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div class="container">
<span class="spinner">
<input id="valueInput" value="205" class="valueInput">
</span>
<select id="typeSelect">
<option value="0">A</option>
<option value="1">B</option>
<option value="2">C</option>
<option value="3" selected="selected">D</option>
<option value="4">E</option>
</select>
</div>
【问题讨论】:
标签: javascript html jquery css twitter-bootstrap