チェックしてください jsfiddleのこのコード
HTML:
<div id="main">
<div id="menu">
<a href="#" class="buttons">Home</a>
<a href="#" class="buttons">About Us</a>
<a href="#" class="buttons">Pictures</a>
<a href="#" class="buttons">Contact Us</a>
</div>
</div>
CSS:
#main
{
width: 64em;
height: 25em;
}
#menu
{
background-color: #00b875;
height: 3em;
}
.buttons
{
text-decoration: none;
color: #ffffff;
line-height: 3em;
display: inline-block;
padding-left: 10px;
padding-right: 10px;
font-family: courier new;
-moz-transition: 1s linear;
-ms-transition: 1s linear;
-o-transition: 1s linear;
-webkit-transition: 1s linear;
transition: 1s linear;
}
.buttons:hover
{
background-color: #0d96d6;
}
あるボタンから別のボタンにすばやく切り替えると、実際には2つのボタンの間にある程度のギャップがあることに気付くでしょう。このスペースを取り除きたいです。何か案は?質問に答える場合は、特定のプロパティがこれを修正する理由も説明してください。
パディングとマージンを使用して調整できることは知っていますが、ズームすると結果が歪む可能性があります。問題を解決する安定した方法を指摘してください。
ありがとう
これを見てください jsFiddle
メニューリンクでdisplay:inline-block;
をdisplay:block;
に更新し、float:left
を追加しました。
inline-block
を使用すると、HTML
マークアップ内の要素間の空白が原因で、要素間にこのいインラインギャップが生じます。
HTMLのタグ間の空白はすべて単一のスペース文字に折りたたまれているため、そのギャップがあります。
あなたは出来る:
</a>
および<a>
ソース内の隣同士、またはfont-size: 0
騙すこの場合、個人的にはすべての<a>
sを残しましたが、ソースから空白を削除する際の注意点は最も少なく、読みにくいということだけです。
スペース自体を取り除きます:これは乱雑に見えるかもしれませんが、実際にはあなたができる最もクリーンなことです。 CSSトリックで達成できることは、スペースをそこに置いて、その存在を否定することです。代わりに、それらを省略したい場合があります。解決すべき唯一の問題は読みやすさです。
それで読みやすくしましょう:
<div id="main">
<div id="menu">
<!--
--><a href="#" class="buttons">Home</a><!--
--><a href="#" class="buttons">About Us</a><!--
--><a href="#" class="buttons">Pictures</a><!--
--><a href="#" class="buttons">Contact Us</a><!--
-->
</div>
</div>
繰り返しますが、私は奇妙に思えます、はい、しかし考えてみてください。ここでの本当の変人はHTMLそのものであり、これを行う明確な方法を提供していません。特別なマークアップと考えてください! HTML標準の一部である可能性もあります。技術的には、btw、itis100%標準、コメントを自由に使用できます...
ここにあなたの解決策があります
.buttons
{
text-decoration: none;
color: #ffffff;
line-height: 3em;
display: inline-block;
padding-left: 10px;
float:left;
padding-right: 10px;
font-family: courier new;
-moz-transition: 1s linear;
-ms-transition: 1s linear;
-o-transition: 1s linear;
-webkit-transition: 1s linear;
transition: 1s linear;
}
これを試してください(JSFiddle)
#main {
height: 25em;
}
#menu {
background-color: #00b875;
height: 3em;
}
.buttons {
text-decoration: none;
color: #ffffff;
line-height: 3em;
display: inline-block;
padding-left:5px;
padding-right:5px;
font-family: courier new;
-moz-transition: 1s linear;
-ms-transition: 1s linear;
-o-transition: 1s linear;
-webkit-transition: 1s linear;
transition: 1s linear;
}
.buttons:hover {
background-color: #0d96d6;
}
2017:要素内にdisplay: inline-flex
でラップし、flex: 0 1 auto
のようなもので内側のボタンを曲げます:
<div style="display: inline-flex">
<button style="flex: 0 1 auto">...</button>
以下のスタイルをボタンに追加します。必要に応じて、いくつかのボタンの最初のマージンをマイナスにします。
ボタン{margin: 0px;
}
最新のCSSの可能性を考えれば、よりクリーンなソリューションはdisplay:inline-flex
メニューとdisplay:flex
ボタン、そしておそらくwidth:100%
メニュー:
ブートストラップを使用する場合、divをclass = "btn-group"でラップすることにより、ボタンをグループ化できます。 v3.3.7の例: https://getbootstrap.com/docs/3.3/components/#btn-groups-single
視覚的には、必要な場合とそうでない場合があります。左端と右端の角が丸く、ボタン間の直線があります。