Stylus s() & +cache บล็อกจะละเว้นการสืบค้นสื่อ

ฉันสังเกตเห็นว่าสไตลัสกำลังใช้รหัส +แคชของฉันในบล็อกที่ไม่ถูกต้อง สไตล์ที่ควรจะแสดงเฉพาะบนคิวรีสื่อแท็บเล็ตจะถูกแสดงแทนในขอบเขตที่ไม่ใช่แคช

ดูเหมือนว่ามีปัญหากับฟังก์ชัน s() ของสไตลัสที่ไม่รับรู้ว่ามันอยู่ภายในบล็อกสื่อและเพิ่งพิมพ์ CSS ออกมา

// styles
.content
    width 70% // mobile devices

    +media('sm') // tablet devices
        width calc('100% - ' + em($photo-size))

นี่คือมิกซ์อินตะกรันของฉัน

calc()
    if current-property
        for prefix in vendors
            arguments = unquote(arguments)
            add-property(current-property[0], s('-%s-calc(%s)', prefix, arguments))
        s('calc(%s)', arguments)
    else
        error('calc() must be used within a property')

การใช้งานแคชนี้ถูกคัดลอกมาจาก http://kizu.ru/en/issues/new-stylus-features/

// Mixin for caching the blocks with the given conditions
media($condition)
    helper($condition)
        unless $media_cache[$condition]
            $media_cache[$condition] = ()
        push($media_cache[$condition], block)

    +helper($condition)
        {selector() + ''}
            {block}

// Function we would use to call all the cached styles
apply_media_cache()
    for $media, $blocks in $media_cache
        $media = unquote($media_aliases[$media] || $media)
        $media = '(%s)' % $media unless match('\(', $media)
        $media = 'only screen and %s' % $media
        @media $media
            for $block in $blocks
                {$block}

CSS ที่ส่งออกดูเหมือน

.content
    width: 70%;
    width: -webkit-calc(100% - 8.928571428571429em);
    width: -moz-calc(100% - 8.928571428571429em);
    width: -ms-calc(100% - 8.928571428571429em);

เมื่อมันควรจะเป็น

@media (…tablet-size…)
    .content
        width: -webkit-calc…
        …

person Maruf    schedule 19.08.2015    source แหล่งที่มา


คำตอบ (2)


Dewd เพียงใช้ Rupture สำหรับคำสั่งสื่อของคุณ ฉันเห็นว่าคุณมีสิ่งที่ยอดเยี่ยมมากมายเกิดขึ้นระหว่างมิกซ์อินและฟังก์ชันนั้น แต่ฉันคิดว่าสิ่งที่คุณพยายามทำนั้นได้รับการแก้ไขแล้วด้วยการแตก ขอให้โชคดี!

person Benjamin Gandhi-Shepard    schedule 18.09.2015
comment
ห้องสมุดสุดเจ๋ง น่าเสียดายที่ไม่มีถั่ว :( - person Maruf; 18.09.2015
comment
ขอโทษ. ดังนั้นฉันจึงเบื่อที่จะเริ่มโค้ดโดยใช้ learnboost.github.io/stylus/try.html แต่มันจะไม่ส่งออกอะไรเลย มีสิ่งอื่นที่จำเป็นในการรันโค้ดหรือไม่? - person Benjamin Gandhi-Shepard; 19.09.2015
comment
ขอบคุณสำหรับความพยายาม แต่ปรากฎว่า นี่เป็นปัญหาที่ได้รับการแก้ไขแล้วซึ่งเกี่ยวข้องกับ Stylus 0.49.x เท่านั้น - person Maruf; 20.09.2015

นี่เป็นปัญหาที่ได้รับการแก้ไขแล้วซึ่งเกี่ยวข้องกับ Stylus 0.49.x ซึ่งใช้โดย grunt-contrib-stylus เวอร์ชันก่อนหน้าเท่านั้น การอัปเดตสไตลัสฮึดฮัดเป็นเวอร์ชัน 0.21.0 แก้ไขปัญหาได้

person Maruf    schedule 20.09.2015