国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

如何在CSS預處理器中使用父選擇器

2024-07-11 09:05:30
字體:
來源:轉載
供稿:網友

網頁制作Webjx文章簡介:CSS預處理器和父選擇器.

Web網站和web app開發對 RTL(right-to-left,從右向左的閱讀順序)是非常頭疼的,因為我們沒有相應的CSS屬性或者是現有的CSS屬性在各個瀏覽器兼容性太差,導致不能夠讓網站和網頁應用正確地展示”RTL”。雖然現有一些屬性比如”text-align:start;”和”-moz-margin-star”都支持”RTL”,但是他們都不能兼容所有的瀏覽器.然而大家都知道多國語言版的網站對于”RTL”的支持也是重要的工作之一。

難道我們最終只能這樣做?給選擇器添加一個支持RTL的樣式,有的時候還需要添加少許偏移.

/* ltr / default */ .some { .thing { > .is { .here { margin-left: 20px; } } } } /* rtl */ html[dir=rtl] { .some { .thing { > .is { .here { margin-right: 20px; margin-left: 0; } } } } }

我認為這樣寫生不如死,有下面這些理由:

  • 如果你需要更改默認嵌套的CSS結構,你也必須記得將這些單獨RTL模塊分開.
  • 如果你需要去改變原來的規則,你也必須記得去改變以前的”RTL模塊”,然后再設置一個新的規則.
  • 在Stylus中,我發現了一個很好的解決方案,用一個簡單的mixin一解決這結問題。

    /* mixin definition ; sets LTR and RTL within the same style call*/ bidi-style(prop, value, inverse-prop, default-value) { {prop}: value; html[dir=rtl] & { {inverse-prop}: value; {prop}: default-value; } } /* usage */ .some { .thing { > .is { .here { bidi-style(margin-left, 20px, margin-right, 0); /* setting LRT and RTL! */ } } } }

    上面這個mixin十分簡單,但是讓我為之興奮. 相比于機械地復制和頻繁地重寫內嵌結構,這種混合類能讓我設置”RTL”的屬性和值在代碼中相同的位置,從而避免去創建單獨的”RTL”模塊. 在這個方案中,根據文字方向可以簡單的置換出相關屬性,基本上覆蓋了95%的情景.

    我也知道LESS也包含了這種模式,但是我不確定SASS也能這樣做.不錯的是,RTL并不是唯一一個能完美應用這個方案的例子.同時,你也可以用這種方法寫一些基本特征的元素像”Modernizr CSS”的類一樣:

    .gradient-background { background-image: linear-gradient(top, #555, #333); .no-cssgradients & { background: url("background.png") } }

    歐耶! 這個簡單的結構讓寫CSS和組織不同狀態時容易了1百萬倍.在理想的情況下,”start”的屬性和值會被增加,但是在這之前沒有,用這種寫法會讓你的生活更輕松。

    補充說明

    以下部分內容來自于自我整理的。

    文中主要介紹了的如何在CSS預處理器語言中使用父選擇器。其實在Sass中,同樣具有這樣的功能,我們來看一個簡單的例子,即將文中Stylus的代碼轉換成Sass的處理方式,具體代碼如下所示:

    @mixin bidi-style($prop,$value,$inverse-prop,$default-value){ #{$prop}: $value; html[dir=rtl] & { #{$inverse-prop}: $value; #{$prop}: $default-value; } } .some { .thing { > .is { .here { @include bidi-style(margin-left,20px,margin-right,0); } } } }

    經過命令編譯出來以后的CSS代碼如下:

    >

    不過在Sass中需要特別注意&的運用,我們來看一個簡單的案例:

    .children { .parent & { color:green; } &.parent { color:blue; } & .parent { color: yellow; } }

    編譯出來的CSS:

    我想從上面這個簡單的案例中,在Sass中如何運用&符實現父選擇器嵌套,你已有一個更形象的理解。如果您對這方面還有更好的建議,不仿在下面的評論中與我們分享。

    譯者手語:整個翻譯依照原文線路進行,并在翻譯過程略加了個人對技術的理解。如果翻譯有不對之處,還煩請同行朋友指點。謝謝!

    如需轉載,煩請注明出處:

    英文原文:

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 招远市| 富顺县| 大洼县| 泰和县| 邢台县| 涿州市| 于田县| 嘉禾县| 阳泉市| 绥芬河市| 洛浦县| 庆元县| 江安县| 中超| 沛县| 金坛市| 辉南县| 白山市| 十堰市| 富阳市| 顺平县| 孝义市| 娄底市| 曲阳县| 通道| 凤冈县| 巫山县| 安泽县| 南川市| 新河县| 富锦市| 巴彦县| 广东省| 南溪县| 临夏县| 汉中市| 洪雅县| 漠河县| 海口市| 财经| 呼玛县|