7

私はこれに何時間も費やしました。添付画像の問題を説明しようとしました。行とテキストの間にスペースを入れて、テキストを白い線で囲む必要があります。

ここに画像の説明を入力

私が考えた最初の解決策-単純な行「margin-top:-20px;」を使用してテキストをオンラインにするだけです テキスト コンテナーにカスタム背景 (たとえば、グレー) を指定します。しかし、コンテナの背景が透明なので、解決策ではありません:(

私はこのようにsmthを作ることを考えました( "float:left"を使って):

<div class="line"></div>
<div class="text">TEXT</div>
<div class="line"></div>
<div class="text">TEXT</div>
<div class="line"></div>

ただし、すべての要素に float:left を使用すると、別の問題があります。白い線はコンテナーの右側で終了する必要があります。

おそらく、この問題に対するいくつかの CSS のベスト プラクティスがあるか、誰かがアドバイスを与えることができます..? どんなアイデアも役に立ちます:)!

4

5 に答える 5

5

http://jsfiddle.net/Q8yGu/5/

HTML

<header><div><span class="spacer"></span><h1>Text</h1><span class="spacer"></span><h1>Text</h1><span class="spacer"></span></div></header>
<header><div><span class="spacer"></span><h1>100% Container Width</h1><span class="spacer"></span></div></header>

CSS

body {
    background:yellow;
}
header {
    display:table;
    width:100%;
    max-width:100%;
}
header div {
    display:table-row;
    line-height:1.5em;
    font-size:2em;
    white-space:nowrap;
}
header h1 {
    font-size:inherit; /* Change font-size in header */
    overflow:hidden;
    display:table-cell;
    vertical-align:middle;
    width:1px;
}
header span.spacer {
    display:table-cell;
}
header h1 {
    padding:0 10px;
}
header span.spacer:after {
    display:inline-block;
    width:100%;
    content:".";
    font-size:0;
    color:transparent;
    height:2px;
    background:#000;
    vertical-align:middle;
    position:relative;
    top:-1px;
}
header > a {
    font-size:.4em;
    vertical-align:middle;
    background:#25a2a4;
    color:#fff;
    text-transform:uppercase;
    font-family:monospace;
    border-radius:.5em;
    padding:.3em .5em;
    text-decoration:none;
}

注: IE8 のサポートを追加するには、以外の要素を使用するか、html5shivheaderを使用します。

于 2012-07-03T20:18:36.617 に答える
1

実際にやりたいことを行うには、行にテキストを散在させて親コンテナーの 100% を占め、テキストのブロックを等間隔に配置するには、JavaScript を使用する必要があります。そのような目的のために jQuery プラグインを作成できます。

これは、そのようなソリューションの始まりになる可能性のある非常に粗いバージョンのコードです

http://jsfiddle.net/jackwanders/XJNpz/

しかし、ここでも線の適切な幅を維持するのは理想的ではありません。

于 2012-07-03T20:11:43.727 に答える
0

これをチェックしてください:

<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
<script>
$(document).ready(function(){
    $(window).resize(function(){
        $('.line').width(($(window).width() - $('.text').width()*2) / 3 - 8);
    });
    $('.line').width(($(window).width() - $('.text').width()*2) / 3 - 8);
})
</script>
<style>

.line{
    margin-top:9px;
    border:1px solid silver;
    float:left;
}

.text{
    margin:auto;
    float:left;
}

</style>
<body>
<div class="line"></div>
<div class="text">text 1</div>
<div class="line"></div>
<div class="text">text 2</div>
<div class="line"></div>
</body>
</html>
于 2012-07-03T20:22:49.083 に答える
0

私は昨日、この同じ質問に答えました。ここで、見てみましょう-> CSSでhtml見出しの真ん中に水平線を引く方法は?

線形勾配に依存しています。古い IE をサポートしていない場合でも、問題なく動作します。

于 2012-07-03T20:07:19.557 に答える
0

HTML:

<div class="line"></div>
<div class="text">TEXT</div>
<div class="line"></div>

CSS:

.line {
    width: 100px;
    padding-top: 15px; /* font-size / 2  = (30/2=15) */
    border-bottom: solid 1px #000;
    float: left;
}
.text {
    font-size: 30px;
    font-weight: bold;
    color: #000;
    float: left; 
}

ここに画像の説明を入力

ライブデモ: jsFiddle


jQuery メソッド:

HTML:

<div id="container">
    <div class="line"></div>
    <div class="text">TEXT</div>
    <div class="line"></div>
</div>

CSS:

#container
{
    width: 1000px; 
}
.line {
    padding-top: 15px; /* font-size / 2  = (30/2=15) */
    border-bottom: solid 1px #000;
    float: left; 
}
.text {
    font-size: 30px;
    font-weight: bold;
    color: #000;
    float: left; 
}

JavaScript:

var text_width = parseInt($(".text").css("width"));
var container_width = parseInt($("#container").css("width"));
var line_width = (container_width - text_width) / 2;    
$("div").find(".line").css("width", line_width+"px");
于 2012-07-03T19:30:16.970 に答える