小编Jam*_*ang的帖子

高级渲染在Chrome和Firefox中有所不同

我发现如果我们设置一个块级别元素,有height:autoheight: 0~100%没有设置父级的高度具有显式值,并且其块级别子级具有底部边距,那么它将在Chrome中以不同方式计算高度,但在Firefox中则不同.对于设置的情况height: 1%:

http://codepen.io/anon/pen/BjgKMR

html {
  background: pink;
}

body {
  background: yellow;
}

div {
  height: 1%;
}

inner {
  margin-bottom: 30px;
  margin-top: 20px;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <p class="inner">block level element</p>
</div>
Run Code Online (Sandbox Code Playgroud)

div块的高度将计算为margin-bottom + content height of p element.我很困惑为什么height: 1%应该计算,auto因为父元素(htmlbody标签)没有明确设置其高度,但具有不同的高度,因为我们只是直接设置高度auto

如果我们直接将其设置为height: auto,则显然只需将高度设置为子块级元素的高度,该高度不包括其下边距.

html {
  background: pink;
}

body {
  background: yellow;
}

div {
  height: auto;
}

inner …
Run Code Online (Sandbox Code Playgroud)

html css css3 language-lawyer flexbox

20
推荐指数
1
解决办法
3万
查看次数

枚举器yielder.yield VS Proc.yield

我最近开始阅读"Programming Ruby 1.9&2.0"一书.它显示了显式枚举器的技巧

triangular_numbers = Enumerator.new do |yielder|
number = 0
count = 1
    loop do
        number += count
        count += 1
        yielder.yield number
    end
end
5.times { print triangular_numbers.next, " " }
puts
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这个yielder.yield会暂时离开循环并返回number的值,直到创建下一个枚举器对象.它似乎与循环块内的产量的通常情况不同.我查看了APIdock,发现Proc.yield()的源代码与Proc.call()相同.对于Enumerator类中的Yielder对象,Yielder已覆盖yield().但是为什么yielder.yield会暂时离开循环块?

参考: APIdock Yielder yield(), Ruby MRI rb_proc_call

ruby yield enumerator

4
推荐指数
1
解决办法
838
查看次数

标签 统计

css ×1

css3 ×1

enumerator ×1

flexbox ×1

html ×1

language-lawyer ×1

ruby ×1

yield ×1