私も同様の問題を抱えていました。
私の場合、ベースフォントサイズは12px、ベースラインは18pxです。
エリックが言ったように、「2つの1pxの境界線を追加することで、リズムが2pxずれていることがわかります」。
これは、leading-border
とtrailing-border
ミックスインがあなたを助けることができるところです。
leading-border($width: 1px, $lines: 1, $font-size: $base-font-size,
$border-style: $default-rhythm-border-style)
trailing-border($width: 1px, $lines: 1, $font-size: $base-font-size,
$border-style: $default-rhythm-border-style)
残念ながら、デフォルトでは、これらのミックスインは境界線をパディングと結合しますが、マージンは結合しません(それぞれ1pxの上部と下部の境界線を持つhrタグに必要なもの)。
私がしたことは、デフォルトのミックスインをオーバーライドしてマージンプロパティを追加することでした(これを行うのが良いかどうかはわかりません):
@function rhythm($lines: 1, $font-size: $base-font-size, $offset: 0) {
@if not $relative-font-sizing and $font-size != $base-font-size {
@warn "$relative-font-sizing is false but a relative font size was passed to the rhythm function";
}
$rhythm: $font-unit * ($lines * $base-line-height - $offset) / $font-size;
// Round the pixels down to nearest integer.
@if unit($rhythm) == px {
$rhythm: floor($rhythm);
}
@return $rhythm;
}
/*override original apply-side-rhythm-border mixin to include property variable - now you can use padding or margin for adding whitespace*/
@mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style, $property: padding) {
@if not $relative-font-sizing and $font-size != $base-font-size {
@warn "$relative-font-sizing is false but a relative font size was passed to apply-side-rhythm-border"; }
border-#{$side}: {
style: $border-style;
width: $font-unit * $width / $font-size; };
#{$property}-#{$side}: rhythm($lines, $font-size, $offset: $width);
}
/*override original leading-border mixin to include property variable - now you can use padding or margin for adding whitespace*/
@mixin leading-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style, $property: padding) {
@include apply-side-rhythm-border(top, $width, $lines, $font-size, $border-style, $property);
}
/*override original trailing-border mixin to include property variable - now you can use padding or margin for adding whitespace*/
@mixin trailing-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style, $property: padding) {
@include apply-side-rhythm-border(bottom, $width, $lines, $font-size, $border-style, $property);
}
今私のhrタグ:
hr {
@include leading-border($property:margin);
@include trailing-border($property:margin);
border-bottom-color: #353535;
border-top-color: #0d0d0d;
}
コンパイルされます:
hr {
border-bottom: 0.083em solid #353535;
border-top: 0.083em solid #0D0D0D;
margin-bottom: 1.417em;
margin-top: 1.417em;
}
そして、私の垂直リズムはもう壊れていません。
試してみて、うまくいくかどうか教えてください。