我需要在移动设备上看到这样的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:clickable="true">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="30dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textSize="15dp"
android:textStyle="bold" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_profile"
/>
</LinearLayout>
在桌面上就像这样:
-----
| 1 |
-----
| 2 |
-----
| 3 |
-----
我决定使用flexbox,我的代码到目前为止:
---------
| | 1 |
| 2 |---|
| | 3 |
| |----
| |
-----
不幸的是,我无法在“1”下滑动列“3”。我该怎么办?
Codepen:http://codepen.io/tomekbuszewski/pen/PbprJP?editors=1100
答案 0 :(得分:2)
您可以尝试将float
用于桌面,并使用设置为移动设备order
的Flexbox。
<强> jsFiddle 强>
.item-1 {background:aqua;}
.item-2 {background:gold;}
.item-3 {background:pink;}
.row {
overflow: hidden;
}
.item {
width: 50%;
}
.item-2 {
float: left;
}
.item-1,
.item-3 {
overflow: hidden;
}
@media (max-width: 768px) {
.row {
display: flex;
flex-direction: column;
}
.item {
width: auto;
float: none;
}
.item-1 {
order: -1;
}
}
&#13;
<div class="row">
<div class="item item-2">2<br><br><br></div>
<div class="item item-1">1</div>
<div class="item item-3">3</div>
</div>
&#13;
答案 1 :(得分:1)
您可以使用flex属性.third
在右侧对齐justify-content
。
你的CSS看起来像这样:
.row{
display: flex;
flex-flow: row wrap;
justify-content: flex-end;
}
.row > div{
flex: 0 0 50%;
}
要更改订单,您可以使用order
属性:
.first{ order: 1; }
.second{ order: 2; }
.third{ order: 3; }
@media (min-width: 700px){
.first{ order: 2; }
.second{ order: 1; }
.third{ order: 3; }
}
在CSS-tricks上,您可以找到使用Flex属性的精彩指南。
答案 2 :(得分:0)
您可以使用float: right
代替所有三个元素。与媒体查询中适当的宽度定义一起,这应该有效。
答案 3 :(得分:0)
网格:
/* Column */
.item {
width: 100%;
}
/* Wrap */
.row {
display: flex;
flex-flow: column wrap;
}
/* Responsive */
@media screen and (min-width: 700px){
.row {
flex-flow: row wrap;
justify-content: flex-end;
}
.item { width: 50%;}
.item-1 { order: 2; }
.item-2 { order: 1; }
.item-3 { order: 3; }
}
/* Custom style */
.item {
color: #fff;
display: block;
height: 200px;
text-align: center;
line-height: 200px;
font-size: 3rem;
}
.item-1 {
background: #00bcd5;
}
.item-2 {
background:#8bc24a;
}
.item-3 {
background:#fec107;
}
&#13;
<div class="row">
<div class="item item-1">1</div>
<div class="item item-2">2</div>
<div class="item item-3">3</div>
</div>
&#13;
带挂钩的
网格:
/* Column */
.item {
width: 100%;
}
/* Wrap */
.row {
display: flex;
flex-flow: column wrap;
}
.sub-row {
display: none;
}
.item-1 { order: 1; }
.item-2 { order: 2; }
.item-3 { order: 3; }
/* Responsive */
@media screen and (min-width: 500px){
.row {
flex-flow: row wrap;
justify-content: flex-end;
}
.sub-row {
width: 50%;
display: flex;
flex-flow: column wrap;
}
.sub-row .item { width: 100%;}
.item { width: 50%;}
.hidden { display: none; }
.item-2 { order: 1; }
.sub-row { order: 2; }
}
/* Custom style */
.item {
color: #fff;
text-align: center;
line-height: 200px;
font-size: 3rem;
}
.item-1 {
background: #00bcd5;
}
.item-2 {
background:#8bc24a;
}
.item-3 {
background:#fec107;
}
&#13;
<div class="row">
<div class="item item-2">2</div>
<div class="sub-row">
<div class="item item-1">1</div>
<div class="item item-3">3</div>
</div>
<div class="item hidden item-1">1</div>
<div class="item hidden item-3">3</div>
</div>
&#13;
答案 4 :(得分:0)
我只是为了演示而给出尺寸的东西很少但是它仍然可以在没有尺寸的情况下工作。
您需要为容器提供一个尺寸,但可以是100vh / 100vw甚至百分比而不是实际像素。
body {
margin: 0;
}
.container {
display: flex;
flex-wrap: wrap;
flex-direction: column;
height: 600px;
width: 100%;
}
.item-1,
.item-2,
.item-3 {
width: 100%;
font-size: 80px;
color: #fff;
text-align: center;
}
.item-1 {
line-height: 100px;
height: 100px;
background: #00bcd5;
}
.item-2 {
line-height: 200px;
height: 200px;
background: #8bc24a;
}
.item-3 {
line-height: 300px;
height: 300px;
background: #fec107;
}
@media (min-width: 700px) {
.item-1,
.item-2,
.item-3 {
width: 50%;
}
.item-1,
.item-3 {
order: 1;
}
.item-2 {
height: 100%;
line-height: 1em;
}
}
&#13;
<div class="container">
<div class="item-1">1</div>
<div class="item-2">2</div>
<div class="item-3">3</div>
</div>
&#13;
希望这是你正在寻找的。 p>
答案 5 :(得分:0)
如何使用绝对位置?
在您的媒体查询中,将.row
类更改为:
.row {
position: relative;
align-items: flex-end;
}
您的.item-2
:
.item-2 { order: 1; position: absolute; top: 0; left: 0; }
/* Column */
.item {
width: 100%;
}
/* Wrap */
.row {
display: flex;
flex-flow: column wrap;
}
/* Responsive */
@media screen and (min-width: 700px){
.row {
position: relative;
align-items: flex-end;
}
.item { width: 50%;}
.item-1 { order: 2; }
.item-2 { order: 1; position: absolute; top: 0; left: 0; }
.item-3 { order: 3; }
}
/* Custom style */
.item {
color: #fff;
display: block;
text-align: center;
line-height: 200px;
font-size: 3rem;
}
.item-1 {
background: #00bcd5;
}
.item-2 {
background:#8bc24a;
}
.item-3 {
background:#fec107;
}
<div class="row">
<div class="item item-1">1</div>
<div class="item item-2">2
<br>2</div>
<div class="item item-3">3</div>
</div>