syntax_html/css_WEB-ITnose を省略

WBOY
リリース: 2016-06-24 11:35:53
オリジナル
1281 人が閲覧しました

http://www.bootcss.com/p/lesscss/#docs より抜粋

LESS 構文

LESS は CSS の機能を去勢するものではなく、既存の CSS 構文を拡張したものです。には多くの追加機能が追加されているため、学習するのは簡単です。したがって、思い切って学習してください。

変数

わかりやすい:

@nice-blue: #5B83AD;@light-blue: @nice-blue + #111;#header { color: @light-blue; }
ログイン後にコピー

出力:

#header { color: #6c94be; }
ログイン後にコピー

変数名を使用して変数として定義することもできます:

@fnord: "I am fnord.";@var: 'fnord';content: @@var;
ログイン後にコピー

解析後:

content: "I am fnord.";
ログイン後にコピー

LESS の変数は完全に「定数」であることに注意してください。したがって、一度だけ定義できます。

混合

LESS では、いくつかの共通の属性セットをクラスとして定義し、これらの属性を別のクラスで呼び出すことができます。以下にそのようなクラスがあります。これらの共通属性セットが他のクラスに導入されている場合、任意のクラスで次のように呼び出すだけで済みます:

.bordered {  border-top: dotted 1px black;  border-bottom: solid 2px black;}
ログイン後にコピー

.border クラスの属性スタイルは #menu a と .post a に反映されます:

#menu a {  color: #111;  .bordered;}.post a {  color: red;  .bordered;}
ログイン後にコピー

任意の CSS クラス、ID、または要素の属性セットを同じ方法で導入できます

パラメーターとの混合

LESS では、関数のようなパラメーターを使用して属性のセットを定義することもできます。

#menu a {  color: #111;  border-top: dotted 1px black;  border-bottom: solid 2px black;}.post a {  color: red;  border-top: dotted 1px black;  border-bottom: solid 2px black;}
ログイン後にコピー

次に、他の呼び出しで。クラスでは次のようになります:

.border-radius (@radius) {  border-radius: @radius;  -moz-border-radius: @radius;  -webkit-border-radius: @radius;}
ログイン後にコピー

次のようにパラメータのデフォルト値を設定することもできます:

#header {  .border-radius(4px);}.button {  .border-radius(6px);  }
ログイン後にコピー

それでは、次のように呼び出します:

.border-radius (@radius: 5px) {  border-radius: @radius;  -moz-border-radius: @radius;  -webkit-border-radius: @radius;}
ログイン後にコピー

半径の値は 5px になります。

次のこともできます:パラメーターなしでプロパティ コレクションを定義します。このプロパティ コレクションを非表示にして CSS に公開されないようにしたいが、他のプロパティ コレクションでも参照したい場合は、このメソッドが非常に簡単に使用できることがわかります:

#header {  .border-radius;  }
ログイン後にコピー

Output :

.wrap () {  text-wrap: wrap;  white-space: pre-wrap;  white-space: -moz-pre-wrap;  word-wrap: break-word;}pre { .wrap }
ログイン後にコピー

@arguments 変数

@arguments には、渡されるすべてのパラメータが含まれます。 各パラメータを個別に処理したくない場合は、次のように記述できます:

pre {  text-wrap: wrap;  white-space: pre-wrap;  white-space: -moz-pre-wrap;  word-wrap: break-word;}
ログイン後にコピー

は出力されます:

.box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) {  box-shadow: @arguments;  -moz-box-shadow: @arguments;  -webkit-box-shadow: @arguments;}.box-shadow(2px, 5px);
ログイン後にコピー

パターン マッチングとガイド式 式

場合によっては、次の例のように、渡されたパラメーターに基づいてミックスのデフォルトのレンダリングを変更する必要があります:

  box-shadow: 2px 5px 1px #000;  -moz-box-shadow: 2px 5px 1px #000;  -webkit-box-shadow: 2px 5px 1px #000;
ログイン後にコピー

.mixin を異なる @switch 値に従って異なる動作にしたい場合は、次のように設定します。次のようにします:

.mixin (@s, @color) { ... }.class {  .mixin(@switch, #888);}
ログイン後にコピー

ここで、次を実行すると:

.mixin (dark, @color) {  color: darken(@color, 10%);}.mixin (light, @color) {  color: lighten(@color, 10%);}.mixin (@_, @color) {  display: block;}
ログイン後にコピー

次の CSS が得られます:

@switch: light;.class {  .mixin(@switch, #888);}
ログイン後にコピー

上記のように、.mixin は渡された色の明るい色を取得します。 @switch が dark に設定されている場合、暗い色が表示されます。

具体的な実装は次のとおりです:

最初のパラメータとしてダークのみを受け入れるため、最初の混合定義は一致しません

  • 2 番目の混合定義はライトのみを受け入れるため、正常に一致します
  • 3 番目の混合定義は一致に成功します任意の値を受け入れるため
  • 一致したミックスのみが使用されます。変数は任意の入力値と一致しますが、変数以外の固定値は、それらに等しい入力値とのみ一致します。
  • 複数の引数を一致させることもできます:

    .class {  color: #a2a2a2;  display: block;}
    ログイン後にコピー

    ここで、1 つの引数を指定して .mixin を呼び出すと、最初の定義の出力が取得されますが、2 つの引数を指定して呼び出した場合は、2 番目の定義が取得されます。 @a が @b. にフェードアウトしました

    Guide

    Guidance は、値やパラメーターに基づいて一致させるのではなく、式に基づいて一致させたい場合に非常に役立ちます。関数型プログラミングに少しでも精通している場合は、ブートストラップを使用したことがあるでしょう。

    CSS の宣言可能性を可能な限り維持するために、LESS は if/else ステートメントの代わりにガイド付きミックスインを介して条件判断を実装します。これは、前者が @media クエリ属性で定義されているためです。

    次の例から始めます:

    .mixin (@a) {  color: @a;}.mixin (@a, @b) {  color: fade(@a, @b);}
    ログイン後にコピー

    when キーワードを使用してブート シーケンスを定義します (この例にはブートが 1 つだけあります)。次に、次のコードを実行します:

    .mixin (@a) when (lightness(@a) >= 50%) {  background-color: black;}.mixin (@a) when (lightness(@a) < 50%) {  background-color: white;}.mixin (@a) {  color: @a;}
    ログイン後にコピー

    結果:

    .class1 { .mixin(#ddd) }.class2 { .mixin(#555) }
    ログイン後にコピー

    このガイドで使用できるすべての比較演算は次のとおりです:

    >= = <

    。さらに、キーワード true はブール値 true のみを表し、次の 2 つの組み合わせは同じです:

    .class1 {  background-color: black;  color: #ddd;}.class2 {  background-color: white;  color: #555;}
    ログイン後にコピー
    キーワード true 以外の値はブール値 false として扱われます:

    .truth (@a) when (@a) { ... }.truth (@a) when (@a = true) { ... }
    ログイン後にコピー

    先頭のシーケンスはカンマで区切られます ', '?, すべての条件が満たされた場合にのみ、一致は成功したとみなされます。

    .class {  .truth(40); // Will not match any of the above definitions.}
    ログイン後にコピー

    ガイドにはパラメータを持たせることも、パラメータに対して比較演算を実行することもできます:

    .mixin (@a) when (@a > 10), (@a < -10) { ... }
    ログイン後にコピー

    最後に、値の型に基づいて照合したい場合は、is* 関数を使用できます:

    @media: mobile;.mixin (@a) when (@media = mobile) { ... }.mixin (@a) when (@media = desktop) { ... }.max (@a, @b) when (@a > @b) { width: @a }.max (@a, @b) when (@a < @b) { width: @b }
    ログイン後にコピー

    以下は一般的な検出関数です:

    iscolor

  • isnumber
  • isstring
  • iskeyword
  • isurl
  • 値が純粋な数値か単位量かを判断したい場合は、次の関数を使用できます:
  • ispixel

  • ispercentage
  • isem
  • 最後に、ガイダンス シーケンスで
  • and

    キーワードの実装と条件を使用できることを付け加えておきます。

    .mixin (@a, @b: 0) when (isnumber(@b)) { ... }.mixin (@a, @b: black) when (iscolor(@b)) { ... }
    ログイン後にコピー

    not

    キーワードの実装または条件を使用します

    .mixin (@b) when not (@b > 0) { ... }
    ログイン後にコピー

    嵌套规则

    LESS 可以让我们以嵌套的方式编写层叠样式. 让我们先看下下面这段 CSS:

    #header { color: black; }#header .navigation {  font-size: 12px;}#header .logo {   width: 300px; }#header .logo:hover {  text-decoration: none;}
    ログイン後にコピー

    在 LESS 中, 我们就可以这样写:

    #header {  color: black;  .navigation {    font-size: 12px;  }  .logo {    width: 300px;    &:hover { text-decoration: none }  }}
    ログイン後にコピー

    或者这样写:

    #header        { color: black;  .navigation  { font-size: 12px }  .logo        { width: 300px;    &:hover    { text-decoration: none }  }}
    ログイン後にコピー

    代码更简洁了,而且感觉跟DOM结构格式有点像.

    注意 & 符号的使用?如果你想写串联选择器,而不是写后代选择器,就可以用到&了. 这点对伪类尤其有用如 :hover 和 :focus.

    例如:

    .bordered {  &.float {    float: left;   }  .top {    margin: 5px;   }}
    ログイン後にコピー

    会输出

    .bordered.float {  float: left;  }.bordered .top {  margin: 5px;}
    ログイン後にコピー

    运算

    任何数字、颜色或者变量都可以参与运算. 来看一组例子:

    @base: 5%;@filler: @base * 2;@other: @base + @filler;color: #888 / 4;background-color: @base-color + #111;height: 100% / 2 + @filler;
    ログイン後にコピー

    LESS 的运算已经超出了我们的期望,它能够分辨出颜色和单位。如果像下面这样单位运算的话:

    @var: 1px + 5;
    ログイン後にコピー

    LESS 会输出 6px.

    括号也同样允许使用:

    width: (@var + 5) * 2;
    ログイン後にコピー

    并且可以在复合属性中进行运算:

    border: (@width * 2) solid black;
    ログイン後にコピー

    Color 函数

    LESS 提供了一系列的颜色运算函数. 颜色会先被转化成 HSL 色彩空间, 然后在通道级别操作:

    lighten(@color, 10%);     // return a color which is 10% *lighter* than @colordarken(@color, 10%);      // return a color which is 10% *darker* than @colorsaturate(@color, 10%);    // return a color 10% *more* saturated than @colordesaturate(@color, 10%);  // return a color 10% *less* saturated than @colorfadein(@color, 10%);      // return a color 10% *less* transparent than @colorfadeout(@color, 10%);     // return a color 10% *more* transparent than @colorfade(@color, 50%);        // return @color with 50% transparencyspin(@color, 10);         // return a color with a 10 degree larger in hue than @colorspin(@color, -10);        // return a color with a 10 degree smaller hue than @colormix(@color1, @color2);    // return a mix of @color1 and @color2
    ログイン後にコピー

    使用起来相当简单:

    @base: #f04615;.class {  color: saturate(@base, 5%);  background-color: lighten(spin(@base, 8), 25%);}
    ログイン後にコピー

    你还可以提取颜色信息:

    hue(@color);        // returns the `hue` channel of @colorsaturation(@color); // returns the `saturation` channel of @colorlightness(@color);  // returns the 'lightness' channel of @color
    ログイン後にコピー

    如果你想在一种颜色的通道上创建另一种颜色,这些函数就显得那么的好用,例如:

    @new: hsl(hue(@old), 45%, 90%);
    ログイン後にコピー

    @new 将会保持 @old的 色调, 但是具有不同的饱和度和亮度.

    Math 函数

    LESS提供了一组方便的数学函数,你可以使用它们处理一些数字类型的值:

    round(1.67); // returns `2`ceil(2.4);   // returns `3`floor(2.6);  // returns `2`
    ログイン後にコピー

    如果你想将一个值转化为百分比,你可以使用percentage 函数:

    percentage(0.5); // returns `50%`
    ログイン後にコピー

    命名空间

    有时候,你可能为了更好组织CSS或者单纯是为了更好的封装,将一些变量或者混合模块打包起来, 你可以像下面这样在#bundle中定义一些属性集之后可以重复使用:

    #bundle {  .button () {    display: block;    border: 1px solid black;    background-color: grey;    &:hover { background-color: white }  }  .tab { ... }  .citation { ... }}
    ログイン後にコピー

    你只需要在 #header a中像这样引入 .button:

    #header a {  color: orange;  #bundle > .button;}
    ログイン後にコピー

    作用域

    LESS 中的作用域跟其他编程语言非常类似,首先会从本地查找变量或者混合模块,如果没找到的话会去父级作用域中查找,直到找到为止.

    @var: red;#page {  @var: white;  #header {    color: @var; // white  }}#footer {  color: @var; // red }
    ログイン後にコピー

    注释

    CSS 形式的注释在 LESS 中是依然保留的:

    /* Hello, I'm a CSS-style comment */.class { color: black }
    ログイン後にコピー

    LESS 同样也支持双斜线的注释, 但是编译成 CSS 的时候自动过滤掉:

    // Hi, I'm a silent comment, I won't show up in your CSS.class { color: white }
    ログイン後にコピー

    Importing

    你可以在main文件中通过下面的形势引入 .less 文件, .less 后缀可带可不带:

    @import "lib.less";@import "lib";
    ログイン後にコピー

    如果你想导入一个CSS文件而且不想LESS对它进行处理,只需要使用.css后缀就可以:

    @import "lib.css";
    ログイン後にコピー

    这样LESS就会跳过它不去处理它.

    字符串插值

    变量可以用类似ruby和php的方式嵌入到字符串中,像@{name}这样的结构:

    @base-url: "http://assets.fnord.com";background-image: url("@{base-url}/images/bg.png");
    ログイン後にコピー

    避免编译

    有时候我们需要输出一些不正确的CSS语法或者使用一些 LESS不认识的专有语法.

    要输出这样的值我们可以在字符串前加上一个 ~, 例如:

    .class {  filter: ~"ms:alwaysHasItsOwnSyntax.For.Stuff()";}
    ログイン後にコピー

    我们可以将要避免编译的值用 “”包含起来,输出结果为:

    .class {  filter: ms:alwaysHasItsOwnSyntax.For.Stuff();}
    ログイン後にコピー

    JavaScript 表达式

    JavaScript 表达式也可以在.less 文件中使用. 可以通过反引号的方式使用:

    @var: `"hello".toUpperCase() + '!'`;
    ログイン後にコピー

    输出:

    @var: "HELLO!";
    ログイン後にコピー

    注意你也可以同时使用字符串插值和避免编译:

    @str: "hello";@var: ~`"@{str}".toUpperCase() + '!'`;
    ログイン後にコピー

    输出:

    @var: HELLO!;
    ログイン後にコピー

    它也可以访问JavaScript环境:

    @height: `document.body.clientHeight`;
    ログイン後にコピー

    如果你想将一个JavaScript字符串解析成16进制的颜色值, 你可以使用 color 函数:

    @color: color(`window.colors.baseColor`);@darkcolor: darken(@color, 10%);
    ログイン後にコピー

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート