html - Bootstrap 3 向 "pushed"div 添加内容会移动其他元素

标签 html css twitter-bootstrap

print screen of the problem

Order of the divs in different screen sizes

你好。我在图片中遇到过这样的情况。我需要在特定位置为不同的屏幕尺寸重新排序 3 个带有 Bootstrap 的 div 元素。 在移动设备上,它们必须彼此重叠(默认情况下)——这没关系。 问题出在平板电脑和笔记本电脑屏幕上。 对于平板电脑和笔记本电脑屏幕,第二个 div 必须放在左边。所以我使用 .col-sm-6 和 .col-sm-pull-6 类以及第一个和第三个 div .col-sm-6 push-6。当 div 中没有内容时,一切正常,但是当我添加一些文本时,左侧的 div 将另一个向下推。如何在不将推送到右侧 div 的情况下实现平滑的文本添加。

对于大屏div 1加了hidden class,所以2和3变成等高,这样也没有问题。 问题只出现在中小屏幕上。 提前致谢。

这里还有代码:

/* =============================		
Base Element Styles
============================== */

* {
	box-sizing: border-box;
}

body {
	font-family: sans-serif;
	line-height: 1.6;
	color: #fff;
	text-align: center;
	padding-top: 55px;
}

/*===============================
		Base Layout Styles
===============================*/

.navbar {
	margin-bottom: 0;
}


/* Headline */

.headline {
	margin-top: 20px;
	margin-bottom: 20px;
}

p {
	margin: 0;
}

.headline-right-top {
	height: 100px;
	background: rgba(0,0,0, 0.8);
}

.headline-left{

	background: rgba(0,0,0, 0.3);
}

.headline-right-bottom {

	background: rgba(0,0,51, 0.6);
}



/*===============================
		Media Queries
===============================
 rel="stylesheet"/>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <meta name ="viewport" content="width=device-width, initial-scale = 1.0"> 
   <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
    <link href="css/style.css" rel="stylesheet" media="screen">
    <title>Newsfeed</title>
</head>
<body>
    
    <div class="navbar navbar-inverse navbar-fixed-top">
    Login bar
    </div> <!-- /.login-bar -->

    <div class="headline">
            <div class="container">
                <div class="row">
                    <div class="headline-right-top col-sm-6 col-sm-push-6 hidden-lg">
                        <div class="headline-see-all-news">
                          All News
                        </div>
                        <div class="banner-region-two">
                          Banner
                        </div>
                    </div>
                    <div class="headline-left col-sm-6 col-sm-pull-6 col-lg-pull-0">
                        <div class="headline-latest">
                            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facilis culpa, ducimus molestiae velit veritatis beatae necessitatibus! Eius nihil quidem odio enim eum, eaque quis amet repellendus officiis magni impedit nesciunt.</p>
                             <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facilis culpa, ducimus molestiae velit veritatis beatae necessitatibus! Eius nihil quidem odio enim eum, eaque quis amet repellendus officiis magni impedit nesciunt.</p>
                        </div>
                    </div>
                    <div class="headline-right-bottom col-sm-6 col-sm-push-6 col-lg-push-0">
                        <div class="headline-oppinions">
                            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facilis culpa, ducimus molestiae velit veritatis beatae necessitatibus! Eius nihil quidem odio enim eum, eaque quis amet repellendus officiis magni impedit nesciunt.</p>
                        </div>
                    </div>
                </div> <!-- /.row -->
            </div> <!-- /.container --> 
        </div> <!-- /.headline -->
</body>
</html>

最佳答案

好吧...所以问题是,在笔记本电脑/平板电脑中,您有 col-sm-6 + col-sm-6 = col-md-12 这将等于一整行,然后是一个 col- sm-6 总是会成为一个新行。因此,当您将内容添加到第一个 col-sm-6(标题-查看所有新闻)时,它会将最后一个 col-sm-6(标题-右下)向下推,因为它位于下一个“行”。要解决此问题,您可以执行以下两项操作之一。

  1. 在平板电脑/笔记本电脑中将右侧的两列明确定义为它们自己的列。这会导致重复的代码,您必须根据屏幕尺寸隐藏/显示这些代码,并且很快就会变得困惑。

  2. 用@media 查询覆盖 sm View 中元素上的 float 并移除推/拉

HTML:

<div class="container">
    <div class="row">
        <div class="headline-right-top col-sm-6 hidden-lg">
            <div class="headline-see-all-news">
              All News
            </div>
            <div class="banner-region-two">
              Banner
            </div>
        </div>
        <div class="headline-left col-sm-6 col-lg-pull-0">
            <div class="headline-latest">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facilis culpa, ducimus molestiae velit veritatis beatae necessitatibus! Eius nihil quidem odio enim eum, eaque quis amet repellendus officiis magni impedit nesciunt.</p>
                 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facilis culpa, ducimus molestiae velit veritatis beatae necessitatibus! Eius nihil quidem odio enim eum, eaque quis amet repellendus officiis magni impedit nesciunt.</p>
            </div>
        </div>
        <div class="headline-right-bottom col-sm-6 col-lg-push-0">
            <div class="headline-oppinions">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facilis culpa, ducimus molestiae velit veritatis beatae necessitatibus! Eius nihil quidem odio enim eum, eaque quis amet repellendus officiis magni impedit nesciunt.</p>
            </div>
        </div>
    </div> <!-- /.row -->
</div> <!-- /.container --> 

CSS:

@media (min-width: 768px;)
{
    .headline-right-top{
        float: right !important;
    }
}

我已经用 jsfiddle 对此进行了测试,它似乎工作正常。 jsfiddle 似乎不支持媒体查询所以我没有链接 fiddle 。我不是 100% 确定这是否适合您的情况,但请尝试一下并告诉我。

编辑:您可能需要第二个媒体查询来删除 xs 设备上的 float 。

@media (max-width: 768px;)
{
    .headline-right-top{
        float: none !important;
    }
}

关于html - Bootstrap 3 向 "pushed"div 添加内容会移动其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36285620/

相关文章:

javascript - 如何使用 .InnerHTML 方法放置特定的数组项

html - CSS水平对齐显示内联跨度

css - 具有单独构建的 Webpack 2 html 文件

html - Css 时间轴文本对齐

html - 简单的单页应用程序模板 Bootstrap

jquery - 通过 jQuery 创建的 Textarea - 但不可编辑,为什么?

jquery - 根据单个页面上的位置更改导航栏 CSS

jquery - 仅当父 div 在 View 中时显示固定按钮

arrays - Angular 2 & Bootstrap - 根据数组中元素的数量将列表分成两列

css - Twitter Bootstrap 下拉列表在单击时不起作用