相关疑难解决方法(0)

在CSS Flexbox中,为什么没有"justify-items"和"justify-self"属性?

考虑flex容器的主轴和横轴:

在此输入图像描述                                                                                                                        资料来源:W3C

要沿主轴对齐flex项,有一个属性:

要沿横轴对齐flex项,有三个属性:

在上图中,主轴是水平的,横轴是垂直的.这些是Flex容器的默认方向.

但是,这些方向可以很容易地与flex-direction财产互换.

/* main axis is horizontal, cross axis is vertical */
flex-direction: row;
flex-direction: row-reverse;

/* main axis is vertical, cross axis is horizontal */    
flex-direction: column;
flex-direction: column-reverse;
Run Code Online (Sandbox Code Playgroud)

(横轴始终垂直于主轴.)

我在描述轴的工作方式时的观点是,任何一个方向似乎都没有什么特别之处.主轴,横轴,它们在重要性方面都是相同的,并且flex-direction可以方便地来回切换.

那么为什么横轴有两个额外的对齐属性呢?

为什么align-content并且align-items合并为主轴的一个属性?

为什么主轴没有justify-self属性?


这些属性有用的场景:

  • 将flex项放在flex容器的角落
    #box3 { align-self: flex-end; justify-self: flex-end; }

  • 制作一组flex项目align-right(justify-content: flex-end)但是让第一个项目对齐left(justify-self: flex-start)

    考虑带有一组导航项和徽标的标题部分.随着justify-self徽标可以左对齐,而导航项目保持最右边,整个事物平滑地调整("弯曲")到不同的屏幕尺寸.

  • 在一排三个柔性物品中,将中间物品粘贴到容器的中心(justify-content: center)并将相邻的物品对齐到容器边缘(justify-self: flex-start …

css w3c language-lawyer flexbox

602
推荐指数
3
解决办法
14万
查看次数

使用负边距来控制弹性框中的空间

我一直在阅读灵活盒子,以解决我一直遇到的问题.我读过/用作问题研究的主要文章就是这个.

我最近在这个这个问题中提出了这个问题,并且感谢@ Michael_B的帮助,<h2>只要总是只有三个flex ,就会解决如何将一个元素(在本例中为一个)置于一个flex-box 中心的问题.弹性框中的-items(在此布局中:) <div><h2><div>.

我想扩展这些要点,因为我意识到可能有一个解决方案可以解决,如果有更多或(更实际)少于3个灵活项目.

它涉及使用边距.如果您margin: auto;在弹性项目上使用它,它会将一个项目居中放在主轴上(有关弹性框的工作原理,请参见下图).

img {
 width: 100%;
 height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<img src="http://i.stack.imgur.com/9Oxw7.png" alt="flex-box demo" />
Run Code Online (Sandbox Code Playgroud)

(这是我弄清楚如何获得下拉照片的最佳方式......)

根据我的理解,使用margin: autoalign-self横轴的属性的当前对应物.

因此,可以通过以下方式将Flex项目置于Flex框中:

$(document).on('click', 'button', function(e) {
  $this = $(this);
  if ($this.attr('id') === 'button1') {
    $('h2').parent().attr("class", "");
    $('h2').attr("class", "toggle1");
  }
  if ($this.attr('id') === 'button2') {
    $('h2').parent().attr("class", "");
    $('h2').attr("class", "toggle1");
  }
  if ($this.attr('id') === 'button3') {
    $('h2').parent().attr("class", "toggle3");
    $('h2').attr("class", "");
  } …
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery flexbox

15
推荐指数
1
解决办法
2348
查看次数

根据原始大小制作flex-grow扩展项目

我连续有3个按钮,宽度各不相同.我希望它们都能获得相同的宽度以填充行的剩余宽度,因此最宽的仍将比其他宽度更宽等.

你可以在下面看到我尝试用flex做的事情导致所有按钮的宽度相同.我知道flex-grow可以用来按比例增长每个项目,但我无法弄清楚如何让它们与原始大小相关.

您可以在第二行中看到蓝色项目大于其他两个项目.我只想让所有三个人从他们当前的大小平均扩大到填充行.

谢谢

.row-flex {
  width: 100%;
  display: flex;
  flex-direction: row;
}

.button {
  flex: 1;
  display: inline-block;
  padding: 10px;
  color: #fff;
  text-align: center;
}

.button--1 {
  background: red
}

.button--2 {
  background: green;
}

.button--3 {
  background: blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class="row-flex">
  <a href="#" class="button button--1">Single</a>
  <a href="#" class="button button--2">Larger title</a>
  <a href="#" class="button button--3">Another really large title</a>
</div>

<br/>

<div class="row">
  <a href="#" class="button button--1">Single</a>
  <a href="#" class="button button--2">Larger title</a>
  <a href="#" class="button button--3">Another really large …
Run Code Online (Sandbox Code Playgroud)

css css3 flexbox

13
推荐指数
2
解决办法
7375
查看次数

在两个不同宽度的柔性项目之间水平居中弯曲项目

假设我有3个水平显示的div flexbox:

 |     |-div1-| |-center-div-| |-wider-div-|     |
Run Code Online (Sandbox Code Playgroud)

我希望中心div与父级的中间对齐.我怎么能做到这一点?justify-content将基于所有宽度的总和居中所有3个div,并且应用于align-self: center中间div不会做任何事情,因为align属性操纵另一个轴上的定位.

是否有响应式CSS解决方案,还是应该使用jQuery?

ul {
    display: flex;
    justify-content: center;
    width: 100%;
    background-color: purple;
}
li {
    background-color: red;
    border: 5px solid blue;
    list-style: none;
}
Run Code Online (Sandbox Code Playgroud)
<ul>
    <li><a href = "#">short</a></li>
    <li><a href = "#">want center</a></li>
    <li><a href = "#">loooooooooooooooooong</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这个问题的插图:https: //jsfiddle.net/7w8mp8Lj/2/

html css css3 flexbox

10
推荐指数
1
解决办法
3022
查看次数

当其兄弟姐妹的宽度不同时,将其居中

我知道flexbox为居中项提供了一个很好的解决方案。但是,当我有3个项目并且无论其他2个项目的大小如何,我都希望中心(第二个)项目相对于窗口居中时,我遇到了一个问题。

在我的笔中,您可以看到第二个项目“客户索引”偏离中心,因为右侧的内容大于左侧的内容。 我如何强迫它居中?

.flex {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex">
  <span style="font-size:12px;">small</span>
  <span style="font-size:20px;">Client Index</span>
  <span style="font-size:18px;">Lots of content that moves the center</span>
</div>
Run Code Online (Sandbox Code Playgroud)

我的Codepen

html css css3 centering flexbox

6
推荐指数
1
解决办法
3042
查看次数

当被其他弹性项目包围时,容器中的弹性项目居中

我有一个弹性盒(请参阅下面的代码片段作为示例)。

\n

我想设置它,以便在所有情况下,它都位于弹性盒<h2>的中心,其他跨度将根据它们的标记围绕它流动。

\n

我基本上是在寻找align-selfCSS 代码,但是是针对主轴,而不是横轴(可能有助于解释我要问的内容)。

\n

我也在申请margin: auto;我的,这是我在阅读本文<h2>后了解到的(一个很棒的页面,但它仍然给我留下了以下问题\xe2\x80\x94除非我没有完全理解所有内容)。

\n

这是我得到的代码:

\n

\r\n
\r\n
.container {\n  align-items: center;\n  border: 1px solid red;\n  display: flex;\n  justify-content: center;\n  width: 100%;\n}\nh2 {\n  margin: auto;\n]
Run Code Online (Sandbox Code Playgroud)\r\n
<div class="container">\n  <h2>I\'m an h2</h2>\n  <span>I\'m span 1</span>\n  <span>I\'m span 2</span>\n  <span>I\'m span 3</span>\n</div>\n<div class="container">\n  <span>I\'m span 1</span>\n  <span>I\'m span 2</span>\n  <span>I\'m span 3</span>\n  <h2>I\'m an h2</h2>\n  <span>I\'m span 4</span>\n  <span>I\'m span 5</span>\n  <span>I\'m span 6</span>\n</div>\n<div …
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery flexbox

5
推荐指数
1
解决办法
2303
查看次数

居中的flexbox项目并证明其余部分

对于奇数个弹性项目,我希望中间的一个在完美的中心,其他项目只是在它周围流动.中间项目具有固定宽度,所有其余部分都是流动的并且必须粘在中间项目上,因此衬垫是固定的.

在此输入图像描述

/* CSS */

.flex-holder {
	display: flex;
	justify-content: center;
}
.middle-item {
	width: 75px;
}
Run Code Online (Sandbox Code Playgroud)
<!-- HTML -->

<ul class="flex-holder">
  <li>Item 1</li>
  <li>Some item</li>
  <li class="middle-item">Middle</li>
  <li>Very long text item</li>
  <li>Test</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

它实际上可以用于flexbox吗?如果不是,请提出另一种解决方案.

html css flexbox

5
推荐指数
1
解决办法
2292
查看次数

将一个元素与多个兄弟元素一起居中

我有一个带有一定数量跨度的 div,它的宽度可能相等,也可能不相等。我知道我可以text-align: center用来使 div 中的所有内容居中。但是,我想选择一个特定的跨度,并将其指定为真正的中心,而不是中心是跨度序列的中点。

我必须模拟这种效果的一个想法是:我想要的中间元素在其左右两侧有两个容器;左边的将是右对齐的,反之亦然。这些容器将保存 div 中的其他内容。如果我可以让这两个容器以等量填充剩余空间,这将具有居中中间元素同时保持左右内容与中心对齐的效果。基本上,这需要将两个容器的宽度设置为 div 中剩余空间的一半。(我不想改变中间 div 的大小。)这可能只用 CSS 吗?

示例:有 4 个跨度,如何将跨度 2 指定为真正的中心?

div {
  width: 500px;
  padding: 4px;
  border: 1px dotted black;
}
span {
  display: inline-block;
  width: 100px;
  text-align: center;
  margin: 4px;
  box-sizing: border-box;
  border: 1px dotted black;
}
#b {
  /* ??? */
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <span id="a">1</span>
  <span id="b">2</span>
  <span id="c">3</span>
  <span id="d">4</span>
</div>
Run Code Online (Sandbox Code Playgroud)

html css centering

5
推荐指数
1
解决办法
198
查看次数

如何将中间项目放在弹性行的中心?

结果是我想要什么:

我在一个容器中有三个元素,display: flex我希望左侧的项目与左侧对齐,右侧的项目与右侧对齐。中心项目在中心对齐。

space-between不是修复。这不是我要找的解决方案。这是因为元素的宽度不同。即使宽度不同,我仍然希望中间元素居中。

这可以用包装纸固定。然后flex: 1在包装纸上放一个,然后在这些包装纸内放元素本身。同样,这不是我要寻找的解决方案。我无法使用包装器。

.parentContainer {
  display: flex;
  justify-content: center;
  align-items: center;
}

.parentContainer > *{
   background: red;
   text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parentContainer">
 <div class="left">small</div>
 <div class="middle">medium element here</div>
 <div class="right">longer element is here too</div>
</div>
Run Code Online (Sandbox Code Playgroud)

html css css3 flexbox

5
推荐指数
1
解决办法
1154
查看次数

标签 统计

css ×9

flexbox ×8

html ×7

css3 ×4

centering ×2

javascript ×2

jquery ×2

language-lawyer ×1

w3c ×1