我有一个通过 flexbox 设置的容器。我想平均分配容器内的每个图 block ,但将它们保持在 220 像素的固定宽度。
我已经接近使用 flex-grow 并设置 min-width: 220px,但它显然已经通过计算调整了图 block 的大小以填充容器。
我还设置了一些媒体查询,以便磁贴在特定断点处堆叠。
根据我当前的样式,是否可以将这些图 block 保持在 220 像素而不拉伸(stretch)它们?这可以通过 flexbox 完成吗?是否有与 flexbox 一样好的替代方案?
.container {
border: 1px solid red;
display: flex;
flex-wrap: wrap;
margin: 0 auto;
max-width: 2000px;
}
.tiles {
border: 1px solid black;
margin: 0 15px 30px 15px;
flex-grow: 1;
padding: 0;
height: 220px;
min-width: 220px;
}
@media screen and (max-width: 1140px) {
.container {
max-width: 850px;
}
}
@media screen and (max-width: 2040px) {
.container {
max-width: 1750px;
}
}
@media screen and (max-width: 1790px) {
.container {
max-width: 1500px;
}
}
@media screen and (max-width: 1540px) {
.container {
max-width: 1250px;
}
}
@media screen and (max-width: 1290px) {
.container {
max-width: 1000px;
}
}
@media screen and (max-width: 1040px) {
.container {
max-width: 750px;
}
}
@media screen and (max-width: 790px) {
.container {
max-width: 500px;
}
}<div class="container">
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
<div class="tiles"></div>
</div>
最佳答案
I'd like to equally distribute each of the tiles inside the container but keep them at a fixed width of 220px.
With my current styling is it possible to keep these tiles at 220px without them stretching?
Can this be done via flexbox?
是的,是的。
不要在图 block 上使用 flex-grow 和 min-width,而是使用 flex 属性。
所以,而不是:
.tiles {
flex-grow: 1;
min-width: 220px;
}
试试这个:
.tiles {
flex: 0 0 220px; /* don't grow, don't shrink, stay at 220px width */
}
flex 属性是 flex-grow、flex-shrink、flex-basis 的简写。
flex-grow 属性控制分配额外空间时 flex 元素相对于容器中其他 flex 元素的增长方式。通过将该值设置为 0,它根本不会从初始主大小(由 flex-basis 定义)开始增长。
flex-shrink 属性控制 flex 元素在溢出容器时相对于其他 flex 元素如何收缩。通过将该值设置为 0,它不会从初始主要大小(由 flex-basis 定义)缩小。
flex-basis 属性设置 flex 元素的初始主要尺寸。
I've also setup some media queries so that the tiles stack on certain breakpoints.
通过使用上面指定的 flex 属性以及代码中已有的 flex-wrap,您可能不需要媒体查询。考虑废弃它们。
此时,您的布局可能是:DEMO
或
您可能遇到了一个共同的症结:当 flex 元素换行时,容器不会重新计算其宽度以收缩换行较少的列,从而导致 large area of whitespace on the right .
有关更多详细信息和可能的解决方法,请在此处查看我的回答:Flexbox Limitation & Challenge
更新
在评论中进行了一些澄清和修改后,找到了解决方案:
HTML
<ul id="content">
<li class="box"></li>
<li class="box"></li>
<li class="box"></li>
...
...
...
</ul>
CSS
*
{
margin:0;padding:0;
}
#content {
display: flex;
flex-wrap: wrap;
list-style: none;
margin:0 auto;
}
.box {
flex: 0 0 90px;
height: 90px;
margin: 5px;
background-color: blue;
}
@media (min-width: 200px) {
#content {
width: 200px;
}
}
@media (min-width: 300px) {
#content {
width: 300px;
}
}
@media (min-width: 400px) {
#content {
width: 400px;
}
}
@media (min-width: 500px) {
#content {
width: 500px;
}
}
@media (min-width: 600px) {
#content {
width: 600px;
}
}
@media (min-width: 700px) {
#content {
width: 700px;
}
}
@media (min-width: 800px) {
#content {
width: 800px;
}
}
@media (min-width: 900px) {
#content {
width: 900px;
}
}
@media (min-width: 1000px) {
#content {
width: 1000px;
}
}
@media (min-width: 1100px) {
#content {
width: 1100px;
}
}
关于html - 具有固定列宽的流体 flexbox 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688685/
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我正在使用Rails3.1并在一个论坛上工作。我有一个名为Topic的模型,每个模型都有许多Post。当用户创建新主题时,他们也应该创建第一个Post。但是,我不确定如何以相同的形式执行此操作。这是我的代码:classTopic:destroyaccepts_nested_attributes_for:postsvalidates_presence_of:titleendclassPost...但这似乎不起作用。有什么想法吗?谢谢! 最佳答案 @Pablo的回答似乎有你需要的一切。但更具体地说...首先改变你View中的这一行对此#
我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'
我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda
有没有一种简单的方法可以将给定的整数格式化为具有固定长度和前导零的字符串?#convertnumberstostringsoffixedlength3[1,12,123,1234].map{|e|???}=>["001","012","123","234"]我找到了解决方案,但也许还有更聪明的方法。format('%03d',e)[-3..-1] 最佳答案 如何使用%1000而不是进行字符串操作来获取最后三位数字?[1,12,123,1234].map{|e|format('%03d',e%1000)}更新:根据theTinMan的
我从用户Hirolau那里找到了这段代码:defsum_to_n?(a,n)a.combination(2).find{|x,y|x+y==n}enda=[1,2,3,4,5]sum_to_n?(a,9)#=>[4,5]sum_to_n?(a,11)#=>nil我如何知道何时可以将两个参数发送到预定义方法(如find)?我不清楚,因为有时它不起作用。这是重新定义的东西吗? 最佳答案 如果您查看Enumerable#find的文档,您会发现它只接受一个block参数。您可以将它发送两次的原因是因为Ruby可以方便地让您根据它的“并行赋