flexboxを使って3つの要素を並べて配置しようとしていますが、align-self
のプロパティは効果がありません。左端の要素(#site-logo
)が常に存在するとは限りませんので、各要素を個別に配置する必要があるため、space-around
またはspace-between
を親要素(#subnav-cont
)に使用していません。 フレックスボックスに並んでいる3つの要素
#site-logo
は
#site-links
がその親との関係を中心にする必要があり、一番左(
存在)の上に座る必要があり、おさらいするために、そして
#nav-social
は右端に座る必要があります。
デモ:http://codepen.io/ourcore/pen/jyBNzZ
#subnav {
z-index: 99999999;
width: 100%;
overflow: auto;
font-size: 1.1rem;
background-color: yellow;
}
#subnav #subnav-cont {
display: flex;
margin: 0 auto;
padding: 0 1.5%;
max-width: 1280px;
background-color: red;
}
#subnav #subnav-cont #site-logo {
align-self: flex-start;
padding: 10px 0;
height: 50px;
}
#subnav #subnav-cont #site-logo img {
display: inline-block;
margin: 0;
padding: 0;
height: 30px;
}
#subnav #subnav-cont > ul li {
display: inline-block;
padding: 0 20px;
height: 50px;
font-size: 1em;
line-height: 50px;
white-space: nowrap;
}
#subnav #subnav-cont #nav-links {
align-self: center;
}
#subnav #subnav-cont #nav-social {
align-self: flex-end;
}
#subnav #subnav-cont #nav-social li {
padding: 0 5px;
}
<nav id="subnav">
<div id="subnav-cont">
<div id="site-logo">
<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png">
</div>
<ul id="nav-links">
<li>
<a href="#" class="subnav-link">Link</a>
</li>
<li>
<a href="#" class="subnav-link">Link</a>
</li>
<li>
<a href="#" class="subnav-link">Link</a>
</li>
<li>
<a href="#" class="subnav-link">Link</a>
</li>
</ul>
<ul id="nav-social">
<li>
<a href="#" class="icon-facebook">Facebook</a>
</li>
<li>
<a href="#" class="icon-twitter">Twitter</a>
</li>
<li>
<a href="#" class="icon-instagram">Instagram</a>
</li>
</ul>
</div>
</nav>
各要素に幅を追加します。 –
[3つのフレックスdivを並べる方法](http://stackoverflow.com/questions/31476024/how-to-arrange-three-flex-div-side-by-side) –
@MikeMcCaughan Thisの可能な複製#左端の要素(#site-logo)は常に存在するとは限りません._その質問の二重引用符ではありません。 – LGSon