neh*_*ist 30 css wordpress sass
我想在我的一个wordpress项目中使用SASS(这将成为未来项目的样板).我希望以符合以下标准的方式执行此操作:
我有一些想法,但没有一个符合上述标准.
style.css并单独使用Sass/index.php
/... other wordpress files ...
/assets/sass/main.scss
/assets/sass/...other sass files...
Run Code Online (Sandbox Code Playgroud)
运行后sass在style.css会在根目录下创建.
优点:
缺点:
//评论style.css同时使用和Sass/index.php
/style.css
/...other wordpress files...
/assets/sass/main.scss
/assets/sass/... other sass files...
Run Code Online (Sandbox Code Playgroud)
优点:
style.css无需任何工具即可轻松添加快速更改缺点:
style.css,一个用于编译的sass)另外我最大的问题是:在哪里放置编译的SASS?与它连接style.css似乎相当奇怪.
有任何想法吗?谢谢!
Yah*_*din 19
在我提出解决方案之前,我认为style.css在Wordpress中解决我们需要的原因非常重要
在Wordpress中,style.css需要该文件才能在后端查看主题信息.
style.css也用作默认输出get_stylesheet_uri().但是,这可以使用stylesheet_uri过滤器进行自定义.
在我看来,Wordpress强迫你拥有主题信息的事实style.css只是糟糕的设计,因为它增加了大约1032个字节.这不是很多,但完全没必要; 特别是如果可以避免,因为文件大小可能是影响网站性能的最大因素.
这与Drupal CMS不同,您的主题信息存储在单独的文件中yourtheme.info,因此永远不会暴露给最终用户
现在我们已经解决了这个问题,这是解决方案!
我认为最好的方法是:
style.min.css使用导入和部分将所有sass文件编译为单个文件(例如)(请参阅http://sass-lang.com/guide#topic-5).随意将其他名称命名.style.css.例如:
style.css文件
/*
Theme Name: Twenty Thirteen
Theme URI: http://wordpress.org/themes/twentythirteen
Author: the WordPress team
Author URI: http://wordpress.org/
Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way.
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: black, brown, orange
Text Domain: twentythirteen
Use it to make something cool, have fun, and share what you've learned with others.
*/
Run Code Online (Sandbox Code Playgroud)
style.min.css
p{color:red;}h1{color:blue;} ...
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用functions.php文件中的以下代码确保在前端的每个页面上添加新样式表:
function theme_name_stylesheets() {
wp_enqueue_style('style-name', get_template_directory_uri() . '/style.min.css');
}
add_action( 'wp_enqueue_scripts', 'theme_name_stylesheets' );
Run Code Online (Sandbox Code Playgroud)
请参阅:https://codex.wordpress.org/Function_Reference/wp_enqueue_style了解更多信息
因此,当您wp_head()在head文档中运行时,它将自动添加正确的CSS文件.
然后你可以运行sass-lint你的sass文件,但仍然在你的主题信息style.css,给两个世界的最佳.
好处
/* ... */,因为主题标题在style.cssNOT中style.min.cssstyle.min.css不再包含主题标题信息,因为它存储在style.css缺点
style.min.css,而不是style.cssstyle.css.但是,我怀疑这将是一个很大的问题(特别是如果你没有发布你的主题),也可以通过一个简单的评论来纠正.您的问题的另一个解决方案是使用以下内容暂时禁用scss-lint注释规则:
// scss-lint:disable Comment
/*!
Theme Name: Twenty Thirteen
Theme URI: http://wordpress.org/themes/twentythirteen
Author: the WordPress team
Author URI: http://wordpress.org/
Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way.
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: black, brown, orange
Text Domain: twentythirteen
Use it to make something cool, have fun, and share what you've learned with others.
*/
// scss-lint:enable Comment
p {
font-size: 16px;
}
Run Code Online (Sandbox Code Playgroud)
还要注意使用响亮的评论(即/*! ... */代替/* ... */).这基本上意味着不应该在sass的缩小版本中删除此注释.
好处
缺点
从您提到的另一条评论中,您说您希望用户能够在不安装sass或构建自动化工具的情况下更改次要内容.
这并不意味着您无法使用构建自动化工具.它只是意味着您的解决方案1或解决方案2中编译的CSS文件不应缩小,因为用户无法轻松编辑该文件!不幸的是,这意味着您的网站文件大小会更大,因此会更慢.
或者,您可以有两个文件:
website.min.css:已编译的SCSS的缩小版本website.css:已编译的SCSS的扩展版本[再次,按照您的意愿命名]
然后,如果用户希望在没有sass或Grunt/Gulp的情况下进行快速更改,那么他/她可以这样做website.css(但是,用户还需要更改正在加载的文件functions.php)
此外,有经验的用户和无需进行任何更改的用户也不必妥协,因为他们仍然可以利用快速缩小的website.min.css版本!
两全其美的!
如何使用styles.css输出你的sass?这就是我所做的,它解决了你的许多问题:
_theme.scss,_responisve.scss,_animate.scss,等).styles.scss文件.@import所有这些部分文件都在您styles.scss的输出中,style.css或者最好是缩小(压缩)版本而不是 - styles.min.css.header.php已在新scss文件中导入的所有已加工样式表.function.php的相同.它真的没有剩下的东西了.
编辑
如果您的设计人员缺乏SCSS经验,他们可以在SCSS文件中编写CSS代码,它仍然可以编译为style.min.css.当然,利用SCSS功能要好得多,但这是与所需经验和知识相关的问题.仍然实现了将SCSS无缝编译到一个文件(style.css)中.
CREDIT TO cale_b - "你可以创建一个"custom.scss"文件,供你的设计师使用(并且他们可以使用vanilla CSS),并且是最后导入的,因此它的样式会覆盖任何其他scss规则"
我使用sass和wordpress gulp,我将编译后的sass输出到style.css这里是我的正常工作流程:
var gulp = require('gulp'),
gulpLoadPlugins = require('gulp-load-plugins'),
wiredep = require('wiredep').stream,
$ = gulpLoadPlugins(),
browserSync = require('browser-sync');
p = require('./package.json');
gulp.task('sass', function (){
return gulp.src('scss/**/*.scss')
.pipe($.sourcemaps.init())
.pipe($.sass())
.pipe($.concat('style.css'))
.pipe($.autoprefixer())
.pipe($.sourcemaps.write())
.pipe(gulp.dest('.'))
.pipe(browserSync.reload({
stream: true
}));
});
gulp.task('sass-prod', function (){
gulp.src('scss/**/*.scss')
.pipe($.sass())
.pipe($.cssmin())
.pipe($.concat('style.css'))
.pipe($.autoprefixer())
.pipe(gulp.dest('.'))
});
Run Code Online (Sandbox Code Playgroud)
/*!
Theme Name: example
Theme URI: http://example.com
Author: xxxxxx
Author URI: xxxx
Description: xxxxx
Version: 1.0
*/
@import 'vars', 'typography', 'header', 'layout', 'proyectos', 'forms', 'libs';
Run Code Online (Sandbox Code Playgroud)