答案 0 :(得分:6)
您所看到的问题是由于边界崩溃时解决冲突的规则。 Solid优先于点缀:
http://lachy.id.au/dev/css/tests/bordercollapse/bordercollapse.html
我相信你也需要点缀相互冲突的边界。因此,如果您将单元格的左边框点缀为虚线,则需要将单元格的右边框设置为左边的点(或者任何优先级较低的点,但点缀最有意义)。
答案 1 :(得分:6)
这是一个解决方案:
如果您没有为每个单元格指定四个边框,而只指定左边框和下边框,则避免边框冲突:
.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;
}
然后,要在第四列中创建虚线边框,您只需将dottedLeftBorder
和dottedBottomBorder
类应用于其单元格(但只有dottedLeftBorder
类用于最后一个细胞)。
现在这里是相应的小提琴:http://jsfiddle.net/Fvds5/3/,其中第四列中的每个单元格现在左下方点缀着1px黑色边框,除了最后一个没有虚线底边框的单元格。
答案 2 :(得分:1)
好的,这个答案部分是根据之前答案中提供的信息设计的,但只是添加!important
,或者使相邻单元格的左右边界点缀是不够的。
首先,各种浏览器之间的渲染机制不一样。 This fiddle在IE,FF和Opera的4行总高度上显示两行。但Chrome和SafariWin只将左行缩短为一行。
为了弥补这一点,我添加了一个额外的虚拟列,这对于消除HTML中的大多数类也非常有用。
其次,基本css样式现在只为单元格提供左边框和下边框。因此,最后一个单元格具有lastCol
样式,因为IE7不会为tr
标记添加边框。
这是revised fiddle,经过IE7,IE8,IE9,FF,Opera,SafariWin和Chrome测试。
修改强>
如果您真的不想要虚拟列,我已将其设置为this far,但该解决方案在Chrome或SafariWin中无效。 (有些奇怪的事情正在发生。也许其他人可以解释。)
答案 3 :(得分:1)
这是我的小提琴:
http://jsfiddle.net/gFA4p/109/
我所做的就是添加
.dottedBottomBorder {
border-top: none !important;
}
.dottedRightBorder + .dottedBottomBorder {
border-top: 1px solid black !important;
}
到样式表的底部,并在每个选择列的右侧添加dottedBottomBorder
类四个单元格。
您遇到的问题是底部单元格的实心边框与顶部单元格的虚线边框重叠。这减轻了这一点。
答案 4 :(得分:0)
.geniusPicks table tr.pickConsensusBody td {border:1px solid; background:grey;}
这是你的问题。我认为你应该为表格单元分配单独的类而不是一般的赋值a la tr> td 也许有一种方法可以减少麻烦但不确定。但基本上这条线会覆盖你的虚线样式。
答案 5 :(得分:0)
看起来像是覆盖或忽略了td中的虚线边框。因为你在这里将边框设置为实线:
.geniusPicks table tr.pickConsensusBody td {
background: none repeat scroll 0 0 grey;
border: 1px solid;
}
编辑:有人在这里打了我~20秒......
答案 6 :(得分:0)
如果我在HTML中添加内联样式并删除类名,这是有效的。
http://jsfiddle.net/jasongennaro/xWSKD/1/
修改强>
如果我使用!important
声明
.dottedRight{border-right:2px dotted black !important;}
.dottedBottom{border-bottom:2px dotted black !important;}
http://jsfiddle.net/jasongennaro/xWSKD/2/
注意强>
小提琴将虚线显示为red
,仅指出更改。请参阅上面的代码以正确使用。
此外,请参阅下面的评论,了解使用!important
(What are the implications of using "!important" in CSS?)
答案 7 :(得分:0)
使用jQuery,您可以:
您可以通过执行以下操作找到该列中的所有行:
$(td[class*="greenBorder"]).addClass("green_borders");
$(td[class*="greenBorder"]).last().css('border-bottom','')
注意我说的是因为我对jQuery不是很好,并且没有正确的语法/掌握如何使用选择器。但我见过类似事情的例子。你可以找到这个网站的大量例子,或查阅原始文件(有点不好,imho)。
好的,我做到了:
<!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>
答案 8 :(得分:-1)