注意:这些问题仅在 Firefox 或 Chrome 中出现。IE 似乎没有同样的问题。
HTML
<div id="renewals-div">
<label for="renewals">Renewals:</label>
<input type="hidden" name="renewal_count" id="renewal_count" value="0">
<table id="renewals">
<thead>
<tr data-num="-1" class="header">
<th class="date_column">Date</th>
<th class="details_column">Details</th>
</tr>
</thead>
<tbody>
<!-- rows populated by ajax call on load -->
</tbody>
</table>
<br>
<label for="add_renewal-div"></label> <!-- spacer -->
<span id="renewal_buttons-span">
<button type="button" id="add_renewal">Add</button>
<button type="button" id="remove_renewal">Remove</button>
</span>
</div>
CSS
form {
width: 100%;
padding-left: 2em;
}
form fieldset {
border: none;
margin: 0 0;
padding: 0 0;
}
form div {
box-sizing: border-box;
width: 100%;
margin-bottom: .2em;
}
form label {
display: inline-block;
padding-bottom: 10px;
width: 30%;
max-width: 15em;
vertical-align: top;
}
form input[type=submit] {
/*float: left;*/
width: 75px;
height: 35px;
}
.radio_group {
width: 70%;
}
form input[type=text] {
width: 50%;
max-width: 400px;
display: inline-block;
}
/* Renewals table and other stuff */
table {
table-layout:fixed;
width: 51%;
max-width: 404px;
border-collapse: collapse;
display: inline-block;
}
table td, table th {
text-align: center;
vertical-align: middle;
border: 1px solid black;
}
table input {
box-sizing: border-box;
-webkit-box-sizing:border-box;
-moz-box-sizing: border-box;
width: 95% !important;
margin: 3px 3px;
}
table tr:hover:not(.selected):not(.header) {
background-color: #D6ADFF;
}
table .selected {
background-color: #522D80;
color: white;
}
.header {
width: 100%;
}
.date_column {
width: 25%;
}
.details_column {
width: 75%;
}
#renewal_buttons-span button {
width: 5em;
height: 2.5em;
}
/*********************************/
div.ui-datepicker {
font-size:10px;
}
/*@media (max-width: 650px) {*/
JS
$('#remove_renewal').click(function() {
var next = $('.selected').next('tr');
$('.selected').remove();
if (next.length === 0) {
$('#renewals tbody tr').last().click();
} else {
next.click();
}
});
我的问题是“续订:”表。我允许用户在表中添加和删除行。默认情况下,页面加载时会加载两个测试行。如果同时删除它们,表格列突然不再尊重它们的宽度属性。由于这些<th>
列是唯一剩下的列,因此我认为它们是不符合我的宽度设置的列。即使不存在行,我怎样才能让它们尊重宽度?
编辑:下面的附带问题已解决。我将 CSS 选择器误解为基于 CSS 文件中的最后一个选择器相互覆盖。显然样式是由最具体的选择器决定的。通过将我的第二个选择器更改为input[type=text]
它足以覆盖前一个选择器而不使用!important
.
附带问题: 我对表格中输入框的宽度有第二个问题。我有两个影响输入宽度的 CSS 选择器:
form input[type=text] {
width: 50%;
max-width: 400px;
display: inline-block;
}
table input {
box-sizing: border-box;
-webkit-box-sizing:border-box;
-moz-box-sizing: border-box;
width: 95% !important;
margin: 3px 3px;
}
如您所见,将宽度设置为的选择器95%
位于前一个之后,因此它应该优先。但是,如果我取出宽度!important
会50%
覆盖95%
!在 CSS 中,我认为对于冲突的样式,最后一个声明/选择的获胜?!important
那么,既然我要应用的样式是最后一个,为什么我还需要呢?