如何style-m.css
和style-l.css
文件Magento2产生?
从理论上讲style-m.css
,与style-l.css
为了更快地在移动设备上加载相比,应该为移动设备使用更少的代码和样式。
如果部分代码应该是style-m.css
或的一部分,如何在较少的文件中定义style-l.css
?
以下链接和源代码并没有帮助我理解它。
资源:
如何style-m.css
和style-l.css
文件Magento2产生?
从理论上讲style-m.css
,与style-l.css
为了更快地在移动设备上加载相比,应该为移动设备使用更少的代码和样式。
如果部分代码应该是style-m.css
或的一部分,如何在较少的文件中定义style-l.css
?
以下链接和源代码并没有帮助我理解它。
资源:
Answers:
这些文件是通过LESS生成的。
理论上,style-m.css应该具有比style-l.css更少的代码,并且仅具有针对移动设备的样式,以便更快地在移动设备上加载。
这不是完全正确的。在styles-m.css
包含CSS规则移动和桌面因而通常比越大,styles-l.css
其中包含了桌面的规则。但是,目标仍然是相同的,通过这种方式,移动设备无需下载台式机设备的CSS规则。
关于如何在其中一个文件中“放置”样式的问题,这是通过Magento UI库媒体查询完成的,该查询帮助Magento根据您的LESS规则创建了这两个文件。
举一个例子,将放置一个如下所示的媒体块,styles-m
因为台式机和移动设备在该块中都具有“共同的”规则:
& when (@media-common = true) {
h1 {
font-size: 12px;
}
}
像这样的媒体查询块将用于最低分辨率为“ screen_xs”的设备,这些设备是屏幕分辨率为480px或更大的移动设备,这意味着它仍将放置在其中,styles-m
但不一定会影响所有移动设备:
.media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__xs) {
h1 {
font-size: 18px;
}
}
改变(@extremum = 'min')
到(@extremum = 'max')
将在规则改变到它的反面,从而只影响设备的宽度比480像素小。
像这样的块将仅涉及台式机设备,因此被放置在中styles-l
,因为“上方”的所有内容均被screen__m
视为台式机设备(默认情况下):
.media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
h1 {
font-size: 24px;
}
}
您可以在《Magento开发人员指南》中阅读有关这些断点的更多信息。
根据default_head_blocks.xml
空白主题布局:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<css src="css/styles-m.css"/>
<css src="css/styles-l.css" media="screen and (min-width: 768px)"/>
<css src="css/print.css" media="print"/>
</head>
</page>
据我了解,styles-l.css
它仅适用于大屏幕(768像素以上),并且styles-m.css
一直适用。
这就是为什么styles-m.css
需要更多代码的原因,因为它包含移动代码以及适用于任何屏幕宽度的代码。styles-l.css
仅包含大屏幕的代码。
您可以使用媒体查询功能和较少的保护功能来定义它。例如,& when (@media-common = true) { ... }
转到styles-m.css,因为这些样式应该随处可用。
说到媒体查询,将转到桌面文件:
.media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {}
您可能要在此处查看有关如何处理样式的幻灯片:https :
//slidr.io/toh82/how-to-deal-with-styles-in-magento-2#1
styles-l.css
,并styles-m.css
在我们的主题?