接受的答案确实解释了如何构建请求的应用程序?如今,这可以通过使用browersify轻松完成。此解决方案还使用group-css-media-queries。
- 安装browserify: npm install -g browserify
- npm install group-css-media-queries
- npm install jquery (主要原因在问题中提出)
现在您可以创建一个main.js
:
var gcmq = require('group-css-media-queries');
var $ = require('jquery');
$( document ).ready(function() {
$('#css').submit(function(e){
$('#grouped textarea').val(gcmq($('#css textarea').val()));
e.preventDefault();
});
});
然后在您的控制台中运行:
>> browserify main.js -o app.js
结果app.js
现在可以包含在 HTML 文件中:
<script type="text/javascript" src="app.js"></script>
您的应用程序的 HTML 页面应如下所示:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Merge Media queries</title>
<script type="text/javascript" src="app2.js"></script>
</head>
<body>
<h1>Unmerged CSS code:</h1>
<form id="css">
<textarea id="csscode" cols="50" rows="10">header {
color: red;
}
@media only screen and (min-width: 768px) {
header {
color: green;
}
}
@media only screen and (min-width: 1024px) {
header {
color: blue;
}
}
section {
color: green;
}
@media only screen and (min-width: 768px) {
section {
color: blue;
}
}
@media only screen and (min-width: 1024px) {
section {
color: red;
}
}</textarea>
<input type="submit" value="merge @media">
</form><br>
<h1>Merged @media:</h1>
<form id="grouped">
<textarea id="groupedcode" cols="50" rows="10"></textarea>
</form>
</body>
</html>
演示:http ://codepen.io/bassjobsen/pen/NqrJeM (由于 JS 代码大,可能加载速度慢),另见http://codepen.io/bassjobsen/pen/rVLgod(同样没有 jQuery(见下文)和缩小的 JS,应该加载更快)
请注意,如果您只使用 jQuery 来处理表单,您将产生大量开销。可能在您的 main.js 中使用纯 JavaScript:
var gcmq = require('group-css-media-queries');
window.onload = function () {
document.getElementById("css").onsubmit = function onSubmit(form) {
var unmerged = document.getElementById('csscode').value;
document.getElementById('groupedcode').value = gcmq(unmerged);
return false;
}
}
而不是构建自己的应用程序,您应该考虑使用后处理插件进行@media 合并,请参阅:https ://stackoverflow.com/a/30325426/1596547