我尝试使用flexbox并排放置三个元素,但align-self
属性无效。我没有在父(space-around
)上使用space-between
或#subnav-cont
,因为每个元素都需要单独定位,因为最左边的元素(#site-logo
)是并不总是在场。
总结一下,#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>
&#13;
答案 0 :(得分:3)
您正在寻找justify-self
,但在flexbox中不存在。 align-self
适用于跨轴。
试试这个:
#nav-links {
margin: auto;
}
<强> codepen 强>
如果您需要#nav-links
在#subnav-con
内居中,则无论其他两个元素是否存在及其宽度如何。您可以将其设置为position: absolute;
以及其他调整。
#nav-links {
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
}
<强> codepen 强>
答案 1 :(得分:1)
window.resolveLocalFileSystemURL(data,
function (fileEntry) {
fileEntry.file(function (fileObj) {
var reader = new FileReader();
reader.onloadend = function (evt) {
base64StringDocument = evt.target.result.match(/,(.*)$/)[1];
};
reader.readAsDataURL(fileObj);
},
function (error) {
console.log('get fileEntry error: ' + error.message);
});
},
function (error) {
console.log('resolve error: ' + error.message);
});
会垂直调整项目。
这是你在找什么?
另外,为了使其正常工作,align-self
和#site-logo
都需要宽度相等,如果不是,#nav-social
需要以另一种方式定位,即{ {1}}
#nav-links
position: absolute