web-dev-qa-db-ja.com

Twitter bootstrap-サブクラスのグラデーションミックスインを削除する方法

カスタムテーマで.navbar-innerをサブクラス化したいのですが、グラデーションを無効にする非ハックな方法を見つけることができません(両方のグラデーションの色を同じ色に設定して汚れているように見えることを除けば)。サブクラスからのミックスインをlessでオーバーライド(無効化)するにはどうすればよいですか?

17
pielgrzym

これは、グラデーションを無効にするためにcssで達成する必要があることです。

CSS:

.navbar-inner {
  background-color: #2c2c2c; 
  background-image: none;
  background-image: none;
  background-image: none;
  background-image: none;
  background-image: none;
  background-image: none;
  background-repeat: no-repeat;
  filter: none;
}

background-image: none;は、すべてのベンダープレフィックスを上書きするために数回使用する必要があります。

remove gradient

14
baptme

SASSコードの場合:background-color:transparentを追加し、ミックスインに移動しました

@mixin override_gradient_vertical() {
  background-color:transparent;
  background-image: none;
  background-image: none;
  background-image: none;
  background-image: none;
  background-image: none;
  background-image: none;
  background-repeat: no-repeat;
  filter: none;
}

今、あなたはただ使うことができます

@include override_gradient_vertical();
5
ScotterC

解決してくれてありがとう。答えを読んだ後に私が思いついたものを共有するだけです:

これは、単純なグラデーションを削除するために使用しているSCSSです。

@mixin remove_gradient($color:transparent) {
    background-color:$color;
    background-image: none;
    background-repeat: no-repeat;
    filter: none;
}

ミックスインに色を渡すことができることに注意してください(私の場合は必要でした):

@include remove_gradient(white);

または、デフォルトで透明にします。

@include remove_gradient();
3
rafaelbiten

グラデーションはbootstrap_themeファイルによって追加されます。

こんなにたくさんの背景画像を持っているという考えは本当に好きではありませんでした。したがって、私の解決策は、SASSまたはLESSバージョンのブートストラップを使用している場合、元々_theme.scssに存在していた次の行でグラデーションをオーバーライドすることです。

から

.navbar-default {
  @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);
  @include reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
  border-radius: $navbar-border-radius;
  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
  @include box-shadow($shadow);

  .navbar-nav > .active > a {
    @include gradient-vertical($start-color: darken($navbar-default-bg, 5%), $end-color: darken($navbar-default-bg, 2%));
    @include box-shadow(inset 0 3px 9px rgba(0,0,0,.075));
  }
}

.navbar-default {
  @include gradient-vertical($start-color: $navbar-default-bg, $end-color: $navbar-default-bg);
  @include reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered

  $shadow: inset 0 0px 0 rgba(255,255,255,.15), 0 0px 0px rgba(0,0,0,.075);
  @include box-shadow($shadow);

  .navbar-nav > .active > a {
    @include gradient-vertical($start-color: $navbar-default-bg, $end-color: $navbar-default-bg);
    @include box-shadow(inset 0 0px 0px rgba(0,0,0,.075));
  }
}

ご覧のとおり、開始点と終了点は同じ値であるため、グラデーション効果は表示されません。シンプルでクリーン。

1
Ronak Jain

ここでの価値は実装が少ないです。 bootstrapファイルmixin.less

#gradient{
    .remove(@color: transparent) {
        background-color:@color;
        background-image: none;
        background-repeat: no-repeat;
        filter: none;
    }
}
1
Kieran