![enter image description here](https://istack.dev59.com/2OCEV.webp)
如何解决这个问题?
vlah
的底边界http://jsfiddle.net/gFA4p/103/。我只是将`clah`的上边框设置为虚线。 - James MontagneIf you do not specify the four borders for each cell, but only the left and bottom borders, you will avoid border conflicts:
.geniusPicks table tr.pickConsensusBody td {
border-left: solid 1px black;
border-bottom: solid 1px black;
background: grey;
}
.geniusPicks table tr.pickBody td {
border-left: solid 1px black;
border-bottom: solid 1px black;
}
Then, to make the dotted borders in the fourth column you just have to apply your dottedLeftBorder
and dottedBottomBorder
classes to its cells (but only the dottedLeftBorder
class for the last cell).
border-collapse:collapse;
。 - James Montagne好的,这个答案部分来源于之前回答中提供的信息,但仅仅添加!important
或使相邻单元格的左右边框变成点状是不够的。
首先,各种浏览器之间的渲染机制并不相同。这个fiddle在IE、FF和Opera中显示了4行总高度上的两条线。但Chrome和SafariWin将左侧线缩短到只有一行。
为了弥补这一点,我添加了一个额外的虚拟列,这也证明了在HTML中消除大多数类别非常有用。
其次,基本的CSS样式现在只给单元格添加了左和底边框。因此,最后一个单元格得到了lastCol
样式,因为IE7不会向tr
标签添加边框。
这里是修改后的fiddle,已经在IE7、IE8、IE9、FF、Opera、SafariWin和Chrome中进行了测试。
编辑:
如果您真的不想要虚拟列,我已经设法将其控制到 this far,但该解决方案在 Chrome 或 SafariWin 中无效。(似乎出了些问题。也许其他人能解释一下。)这是我的代码片段:
http://jsfiddle.net/gFA4p/109/
我所做的只是添加
.dottedBottomBorder {
border-top: none !important;
}
.dottedRightBorder + .dottedBottomBorder {
border-top: 1px solid black !important;
}
dottedBottomBorder
类添加到每个选择列右侧的四个单元格中,同时将其放置在样式表的底部。
您遇到的问题是底部单元格的实线边框重叠在顶部单元格的虚线边框上。这可以缓解这种情况。使用jQuery,您可以:
您可以通过执行以下操作来查找该列中的所有行:
$(td[class*="greenBorder"]).addClass("green_borders");
$(td[class*="greenBorder"]).last().css('border-bottom','')
请注意,我说的是类似的东西,因为我不太擅长jQuery,也没有正确的语法/理解选择器的使用方式。但我看过类似的例子。您可以在该网站上找到大量此类示例,或查阅原始文档(在我看来有点糟糕)。
好的,我做到了:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<title>Green Border</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<style type="text/css">
.geniusPicks {}
.geniusPicks table {width:100%; font-size:12px;}
.geniusPicks table tr#picksHeading {border:0px solid; height:30px;}
.geniusPicks table tr#picksHeading th {background:darkRed; color:white; font-weight:bold;}
.geniusPicks table tr.pickHeading {border:0px solid;}
.geniusPicks table tr.pickHeading td {background:red; padding-left:10px;}
.geniusPicks table tr.pickConsensusBody td {border:1px solid; background:grey;}
.geniusPicks table tr.pickBody td {border:1px solid;}
.bigGap td {height:19px;}
.smallGap td {height:10px;}
.geniusPicks table th,
.geniusPicks table th+th+th+th+th+th,
.geniusPicks table .pickHeading+tr td,
.geniusPicks table .pickHeading+tr td+td+td+td+td+td+td {text-align:center;}
.geniusPicks table th+th+th,
.geniusPicks table .pickHeading+tr td+td+td {text-align:left;}
.borderLeftRadius {
border-radius:15px 0 0 0;
-moz-border-radius:15px 0 0 0;
-webkit-border-radius:15px 0 0 0;
-khtml-border-radius:15px 0 0 0;
}
.borderRightRadius {
border-radius:0 15px 0 0;
-moz-border-radius:0 15px 0 0;
-webkit-border-radius:0 15px 0 0;
-khtml-border-radius:0 15px 0 0;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
var green = jQuery("td[name='green']");
green.each(function(){
var cl = $(this).attr('class');
var prev = $(this).prev();
$(this)
.css('border-color','#aeaeae')
.css('border-style','dotted')
.css('border-right-style','solid')
.css('border-right-color','black')
.addClass(function(i,currentClass){ return "dotted"; });
if (prev.attr('class') == "dottedRightBorder") {
prev.css('border-right-style','dotted')
.css('border-right-color','#aeaeae')
}
if (cl=="top") {
$(this)
.css('border-top-style','solid')
.css('border-top-color','black')
} else
if (cl=="bottom"){
$(this)
.css('border-bottom-style','solid')
.css('border-bottom-color','black')
}
});
});
</script>
</head>
<body>
<div class="geniusPicks">
<table cellpadding="1" cellspacing="0">
<thead>
<tr id="picksHeading">
<th class="borderLeftRadius">Sport</th>
<th>Status</th>
<th colspan="2">Pick</th>
<th>Genius</th>
<th>Genius Credential</th>
<th class="borderRightRadius">Result</th>
</tr>
</thead>
<tbody>
<tr class="bigGap">
<td colspan="7"></td>
</tr>
<tr class="pickHeading">
<td colspan="7" class="borderLeftRadius">blah</td>
</tr>
<tr class="pickConsensusBody">
<td rowspan="4">moo</td>
<td rowspan="4">flah</td>
<td rowspan="4" class="dottedRightBorder">glah</td>
<td name="green" class="top">vlah</td>
<td>mlah</td>
<td>nlah</td>
<td rowspan="4">jlah</td>
</tr>
<tr class="pickConsensusBody">
<td name="green" >clah</td>
<td>dlah</td>
<td>xlah</td>
</tr>
<tr class="pickConsensusBody">
<td name="green" >plah</td>
<td>slah</td>
<td>klah</td>
</tr>
<tr class="pickConsensusBody">
<td name="green" class="bottom">qlah</td>
<td>wlah</td>
<td>zlah</td>
</tr>
<tr class="smallGap">
<td colspan="7"></td>
</tr>
<tr class="pickHeading">
<td colspan="7" class="borderLeftRadius">blah</td>
</tr>
<tr class="pickBody">
<td rowspan="4">moo</td>
<td rowspan="4">flah</td>
<td rowspan="4" class="dottedRightBorder">glah</td>
<td name="green" class="top">vlah</td>
<td>mlah</td>
<td>nlah</td>
<td rowspan="4">jlah</td>
</tr>
<tr class="pickBody">
<td name="green" >clah</td>
<td>dlah</td>
<td>xlah</td>
</tr>
<tr class="pickBody">
<td name="green">plah</td>
<td>slah</td>
<td>klah</td>
</tr>
<tr class="pickBody">
<td name="green" class="bottom">qlah</td>
<td>wlah</td>
<td>zlah</td>
</tr>
<tr class="smallGap">
<td colspan="7"></td>
</tr>
</tbody>
</table>
</div>
.geniusPicks table tr.pickConsensusBody td {border:1px solid; background:grey;}
这是你的问题。我认为你应该给表格单元格分配单独的类,而不是像 tr>td 这样进行一般的分配。 也许有一种更简便的方法,但我不确定。但基本上,那行代码覆盖了你的点状样式。
看起来它正在覆盖或忽略您在 td 中的点状边框。因为您在此处将边框设置为实线:
.geniusPicks table tr.pickConsensusBody td {
background: none repeat scroll 0 0 grey;
border: 1px solid;
}
编辑:有人在这里比我快了约20秒...
如果我在HTML中添加内联样式并且去掉类名,这将起作用。
http://jsfiddle.net/jasongennaro/xWSKD/1/
编辑
如果我使用!important
声明将样式添加到CSS中,这也可以正常工作。
.dottedRight{border-right:2px dotted black !important;}
.dottedBottom{border-bottom:2px dotted black !important;}
http://jsfiddle.net/jasongennaro/xWSKD/2/
注意
这些代码片段将虚线显示为 红色
,只是为了指出更改。请参见上面的代码以获取正确使用方法。
此外,请参阅下面的注释,了解使用!important
可能产生的影响(CSS中使用"!important"有什么影响?)。
1px dotted black
。正如 kingjiv 所说:2px
的优先级高于 1px
,就像 solid
高于 dotted
。 - NGLN1px
。由于 2px dotted
的大小与 1px solid
非常相似(请参见上面的 fiddle),因此这对我来说似乎是一个合理的解决方案。 - Jason Gennaro