gpt4 book ai didi

jquery - 通过 jquery 合并 @media 规则

转载 作者:行者123 更新时间:2023-11-28 18:44:53 25 4
gpt4 key购买 nike

我目前正在使用 LESS 来“冒泡”我的媒体查询。所以我输出的 CSS 是这样的 -

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;
}
}

如您所见,对于所使用的每个媒体查询,每个元素(标题/部分/任何内容)都有一个单独的规则声明。

我可以使用 jQuery 来遍历 CSS 文件并“整理”所有类似的@media 规则(无论它们是什么)并有一个输出(appendto?)位 html 来复制和粘贴吗?

编辑:如果我创建了一个“应用程序”,我可以复制并粘贴原始 CSS 并让 jQuery 查找/替换/整理媒体查询,以便将所有相同的内容放在一起吗?

编辑:为了避免混淆,我想创建一个应用程序,它采用 RAW 副本并粘贴一些文本(即 CSS),然后将正确的 @media 规则编译并合并在一起。然后您可以将其粘贴回您的代码编辑器中。实际上并没有“接触”一个 CSS 文件

最佳答案

接受的答案确实解释了如何构建请求的应用程序?如今,这可以通过使用 browersify 轻松完成。 .此解决方案还使用 group-css-media-queries .

  1. 安装 browserify:npm install -g browserify
  2. npm 安装 group-css-media-queries
  3. 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

关于jquery - 通过 jquery 合并 @media 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com