我在html中创建一个单行菜单。我有3个选项以非常相似的方式工作。问题是具有html权限的那个,看起来更容易失败。我把这3个例子放在这里。我正在寻找可靠的,与浏览器兼容的菜单。第三个选项使用javascript,所以我真的不喜欢它。
菜单必须是100%宽度,在灰色矩形内,左边有一些文字,右边有一些文字。只需一个超链接即可点击整个菜单。到目前为止,这是what I have tried:
<a href="http://newfutureuniversity.org/test/hblock.php">
<h2 style="width:100%; height:100%; border: 1px solid #AAA; padding: 0px 0px 0px 5px; background-color: #EEE;">
Hello world
<span style="margin: 6px; color:gray; font-size: 15px; float:right; ">
Right text
</span>
</h2>
</a>
<h2 style="border: 1px solid #AAA; padding: 0px 0px 0px 5px; background-color: #EEE;">
<a href="http://newfutureuniversity.org/test/hblock.php" style="width:100%; height:100%; display:block;">
Hello world
</a>
<span style="position: relative; right: 6px; top:-23px; color:gray; font-size: 15px; float:right; ">
Right text
</span>
</h2>
<h2 onclick="location.href='http://newfutureuniversity.org/test/hblock.php';" style="cursor:pointer; display: block; width:100%; height:100%; border: 1px solid #AAA; padding: 0px 0px 0px 5px; background-color: #EEE;">
Hello world
<span style="margin: 6px; color:gray; font-size: 15px; float:right; ">
Right text
</span>
</h2>
PS,所有内联CSS都将被拆分为不同的CSS表。
答案 0 :(得分:2)
我建议更好的方法是将HTML重组为以下内容:
<h2>
<a href="http://newfutureuniversity.org/test/hblock.php">Hello world<span>Right text</span></a>
</h2>
然后使用以下CSS:
a {
display: block;
padding: 0.2em;
width: 80%;
margin: 0 auto;
border: 1px solid #000;
background-color: #aaa;
}
a span {
color: #000;
float: right;
text-decoration: none;
font-size: 0.8em;
padding-top: 0.2em;
}
这有效性取决于您希望最终放置在h2
标记内的元素,以保持可点击状态。在HTML5下,将块级元素嵌套在HTML4下的a
标记内是有效的,但根据doctype,它仍然可以正常工作, 认为无效。
但是,对于公布的要求,这似乎有效;虽然它确实需要重构您的HTML,这可能是不可能的。但是:
span
的内容超过给定的宽度,px
调整(虽然它确实使用padding
将调整后的文本垂直居中于a
), 编辑稍微修改CSS,以说明右浮动文本变得足够大以溢出到下一行的可能性,只需将overflow: hidden
添加到a
元素的CSS:
a {
display: block;
padding: 0.2em;
width: 80%;
margin: 0 auto;
border: 1px solid #000;
background-color: #aaa;
overflow: hidden;
}
您当然也可以向max-width
添加span
:
a span {
color: #000;
float: right;
text-decoration: none;
font-size: 0.8em;
padding-top: 0.2em;
max-width: 80%;
}
答案 1 :(得分:0)
我赞同David Thomas的标记。虽然我会略微改变css以使其更强大。如果您调整浏览器的大小以使右侧跨度被推到左侧文本下方(使浏览器变小),那么您将看到我应用的清除属性意味着围绕跨度而不是允许跨度移出一个区域。
<强> HTML:强>
<h2 class="item ">
<a href="#" >Loads of left left Left Text<span>Right Text lots more</span></a>
</h2>
<强> CSS:强>
.item a {
zoom:1;
border: 1px solid #666;
background: grey;
display: block;
}
.item a:before,
.item a:after {
content:"";
display:table;
}
.item a:after {
clear:both;
}
.item span {
background: green;
float: right;
}
<强>样本:强>