热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将两个内嵌块左右对齐放在同一行上-Aligntwoinline-blocksonsameline,onetotheleftandonetotheright

HowcanIaligntwoinline-blockssothatoneisleftandtheotherisrightonthesameline?Whyi

How can I align two inline-blocks so that one is left and the other is right on the same line? Why is this so hard? Is there something like LaTeX's \hfill that can consume the space between them to achieve this?

如何对齐两个内线块,使其中一个是左的,另一个是右的?为什么这么难?是否有像乳胶的\hfill这样的东西可以消耗它们之间的空间来达到这个目的?

I don't want to use floats because with inline-blocks I can line up the baselines. And when the window is too small for both of them, with inline-blocks I can just change the text-align to center and they will be centered one atop another. Relative(parent) + Absolute(element) positioning has the same problems as floats do.

我不想使用浮点数,因为有了内联块,我可以将基线对齐。当窗口对这两个窗口来说都太小时,使用内联块,我就可以将文本对齐到中心,它们将会彼此重叠。相对(父)+绝对(元素)定位与浮动有相同的问题。

The HTML5:

HTML5:


    

Title

The css:

css:

header {
    //text-align: center; // will set in js when the nav overflows (i think)
}

h1 {
    display: inline-block;
    margin-top: 0.321em;
}

nav {
    display: inline-block;
    vertical-align: baseline;
}

Thery're right next to each other, but I want the nav on the right.

它们相邻,但是我想要右边的nav。

a diagram

7 个解决方案

#1


105  

Edit: 3 years has passed since I answered this question and I guess a more modern solution is needed, although the current one does the thing :)

编辑:我回答这个问题已经三年了,我想需要一个更现代的解决方案,尽管目前的方案是这样的:)

1.Flexbox

1. flexbox

It's by far the shortest and most flexible. Apply display: flex; to the parent container and adjust the placement of its children by justify-content: space-between; like this:

它是迄今为止最短、最灵活的。应用显示:flex;对父容器进行调整,并根据其正当性内容:空格;是这样的:

.header {
    display: flex;
    justify-content: space-between;
}

Can be seen online here - http://jsfiddle.net/skip405/NfeVh/1073/

在这里可以看到http://jsfiddle.net/skip405/NfeVh/1073/

Note however that flexbox support is IE10 and newer. If you need to support IE 9 or older, use the following solution:

不过请注意,flexbox支持的是IE10和更新版本。如果您需要支持IE 9或以上版本,请使用以下解决方案:

2.You can use the text-align: justify technique here.

2。您可以在这里使用“文本对齐”技术。

.header {
    background: #ccc; 
    text-align: justify; 

    /* ie 7*/  
    *width: 100%;  
    *-ms-text-justify: distribute-all-lines;
    *text-justify: distribute-all-lines;
}
 .header:after{
    content: '';
    display: inline-block;
    width: 100%;
    height: 0;
    font-size:0;
    line-height:0;
}

h1 {
    display: inline-block;
    margin-top: 0.321em; 

    /* ie 7*/ 
    *display: inline;
    *zoom: 1;
    *text-align: left; 
}

.nav {
    display: inline-block;
    vertical-align: baseline; 

    /* ie 7*/
    *display: inline;
    *zoom:1;
    *text-align: right;
}

The working example can be seen here: http://jsfiddle.net/skip405/NfeVh/4/. This code works from IE7 and above

可以在这里看到工作示例:http://jsfiddle.net/skip405/NfeVh/4/。此代码适用于IE7及以上版本

If inline-block elements in HTML are not separated with space, this solution won't work - see example http://jsfiddle.net/NfeVh/1408/ . This might be a case when you insert content with Javascript.

如果HTML中的inline-block元素没有与空格分开,那么这个解决方案将不起作用——请参见示例http://jsfiddle.net/NfeVh/1408/。使用Javascript插入内容时可能会出现这种情况。

If we don't care about IE7 simply omit the star-hack properties. The working example using your markup is here - http://jsfiddle.net/skip405/NfeVh/5/. I just added the header:after part and justified the content.

如果我们不关心IE7,那就忽略star-hack属性。使用您的标记的工作示例在这里—http://jsfiddle.net/skip405/NfeVh/5/。我只是添加了标题:后部分,并证明内容。

In order to solve the issue of the extra space that is inserted with the after pseudo-element one can do a trick of setting the font-size to 0 for the parent element and resetting it back to say 14px for the child elements. The working example of this trick can be seen here: http://jsfiddle.net/skip405/NfeVh/326/

为了解决在after伪元素中插入额外空间的问题,我们可以使用这样的技巧:将父元素的字体大小设置为0,将子元素的字体大小设置为14px。这个技巧的工作示例可以在这里看到:http://jsfiddle.net/skip405/NfeVh/326/

#2


3  

If you don't want to use floats, you're going to have to wrap your nav:

如果你不想使用浮动,你需要将你的nav包裹起来:


Title

...and add some more specific css:

…并添加一些更具体的css:

header {
//text-align: center; // will set in js when the nav overflows (i think)
width:960px;/*Change as needed*/
height:75px;/*Change as needed*/
}

h1 {
display: inline-block;
margin-top: 0.321em;
}

#navWrap{
position:absolute;
top:50px; /*Change as needed*/
right:0;
}

nav {
display: inline-block;
vertical-align: baseline;
}

You may need to do a little more, but that's a start.

你可能需要做更多,但这只是一个开始。

#3


3  

Taking advantage of @skip405's answer, I've made a Sass mixin for it:

利用@skip405的答案,我做了一个Sass mixin:

@mixin inline-block-lr($container,$left,$right){
    #{$container}{        
        text-align: justify; 

        &:after{
            content: '';
            display: inline-block;
            width: 100%;
            height: 0;
            font-size:0;
            line-height:0;
        }
    }

    #{$left} {
        display: inline-block;
        vertical-align: middle; 
    }

    #{$right} {
        display: inline-block;
        vertical-align: middle; 
    }
}

It accepts 3 parameters. The container, the left and the right element. For example, to fit the question, you could use it like this:

它接受三个参数。容器,左边和右边的元素。例如,为了符合问题,你可以这样使用:

@include inline-block-lr('header', 'h1', 'nav');

#4


1  

If you're already using Javascript to center stuff when the screen is too small (as per your comment for your header), why not just undo floats/margins with Javascript while you're at it and use floats and margins normally.

如果在屏幕太小时,你已经在用Javascript处理中心问题(根据你的标题的注释),为什么不使用Javascript来撤销浮动/页边距,并且通常使用浮动和页边距。

You could even use CSS media queries to reduce the amount Javascript you're using.

您甚至可以使用CSS媒体查询来减少Javascript的使用量。

#5


0  

give it float: right and the h1 float:left and put an element with clear:both after them.

赋予它float: right和h1 float:left,并在它们后面加上一个clear:both。

#6


0  

I think one possible solution to this is to use display: table:

我认为一个可能的解决方法是使用display: table:

.header {
  display: table;
  width: 100%;
  box-sizing: border-box;
}

.header > * {
  display: table-cell;
}

.header > *:last-child {
  text-align: right;  
}

h1 {
  font-size: 32px;
}

nav {
  vertical-align: baseline;
}

JSFiddle: http://jsfiddle.net/yxxrnn7j/1/

JSFiddle:http://jsfiddle.net/yxxrnn7j/1/

#7


0  

For both elements use

两个元素使用

display: inline-block;

the for the 'nav' element use

使用“nav”元素

float: right;

推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 本文详细介绍了 Java 中 org.w3c.dom.Node 类的 isEqualNode() 方法的功能、参数及返回值,并通过多个实际代码示例来展示其具体应用。此方法用于检测两个节点是否相等,而不仅仅是判断它们是否为同一个对象。 ... [详细]
  • 前端开发PPT页面与评论区展示优化
    本文介绍了如何在前端开发中实现一个类似于StackOverflow样式的PPT展示页面和评论区,提供了项目源代码及在线演示链接,并分享了开发过程中遇到的挑战及其解决方案。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 线段树详解与实现
    本文详细介绍了线段树的基本概念及其在编程竞赛中的应用,并提供了一个具体的线段树实现代码示例。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 微信小程序开发指南:创建动态电影选座界面
    本文详细介绍如何在微信小程序中实现一个动态且可视化的电影选座组件,提高用户体验。通过合理的布局和交互设计,使用户能够轻松选择心仪的座位。 ... [详细]
  • 本文探讨了在UIScrollView上嵌入Webview时遇到的一个常见问题:点击图片放大并返回后,Webview无法立即滑动。我们将分析问题原因,并提供有效的解决方案。 ... [详细]
author-avatar
a52713849_937
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有