From 4a0dd3236ecdcd7ad0340d0d103c9c9012a11538 Mon Sep 17 00:00:00 2001 From: tiwuofficial Date: Fri, 6 Dec 2019 15:13:47 +0900 Subject: [PATCH] copy docs/ja/guide/css.md --- docs/ja/guide/css.md | 171 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 docs/ja/guide/css.md diff --git a/docs/ja/guide/css.md b/docs/ja/guide/css.md new file mode 100644 index 0000000000..aac1986dbf --- /dev/null +++ b/docs/ja/guide/css.md @@ -0,0 +1,171 @@ +# Working with CSS + +Vue CLI projects comes with support for [PostCSS](http://postcss.org/), [CSS Modules](https://github.com/css-modules/css-modules) and pre-processors including [Sass](https://sass-lang.com/), [Less](http://lesscss.org/) and [Stylus](http://stylus-lang.com/). + +## Referencing Assets + +All compiled CSS are processed by [css-loader](https://github.com/webpack-contrib/css-loader), which parses `url()` and resolves them as module requests. This means you can refer to assets using relative paths based on the local file structure. Note if you want to reference a file inside an npm dependency or via webpack alias, the path must be prefixed with `~` to avoid ambiguity. See [Static Asset Handling](./html-and-static-assets.md#static-assets-handling) for more details. + +## Pre-Processors + +You can select pre-processors (Sass/Less/Stylus) when creating the project. If you did not do so, the internal webpack config is still pre-configured to handle all of them. You just need to manually install the corresponding webpack loaders: + +``` bash +# Sass +npm install -D sass-loader sass + +# Less +npm install -D less-loader less + +# Stylus +npm install -D stylus-loader stylus +``` + +Then you can import the corresponding file types, or use them in `*.vue` files with: + +``` vue + +``` + +::: tip A Tip on Sass Performance +Note that when using Dart Sass, **synchronous compilation is twice as fast as asynchronous compilation** by default, due to the overhead of asynchronous callbacks. To avoid this overhead, you can use the [fibers](https://www.npmjs.com/package/fibers) package to call asynchronous importers from the synchronous code path. To enable this, simply install `fibers` as a project dependency: +``` +npm install -D fibers +``` +Please also be aware, as it's a native module, there may be compatibility issues vary on the OS and build environment. In that case, please run `npm uninstall -D fibers` to fix the problem. +::: + +### Automatic imports + +If you want to automatically import files (for colors, variables, mixins...), you can use the [style-resources-loader](https://github.com/yenshih/style-resources-loader). Here is an example for stylus that imports `./src/styles/imports.styl` in every SFC and every stylus files: + +```js +// vue.config.js +const path = require('path') + +module.exports = { + chainWebpack: config => { + const types = ['vue-modules', 'vue', 'normal-modules', 'normal'] + types.forEach(type => addStyleResource(config.module.rule('stylus').oneOf(type))) + }, +} + +function addStyleResource (rule) { + rule.use('style-resource') + .loader('style-resources-loader') + .options({ + patterns: [ + path.resolve(__dirname, './src/styles/imports.styl'), + ], + }) +} +``` + +You can also use the [vue-cli-plugin-style-resources-loader](https://www.npmjs.com/package/vue-cli-plugin-style-resources-loader). + +## PostCSS + +Vue CLI uses PostCSS internally. + +You can configure PostCSS via `.postcssrc` or any config source supported by [postcss-load-config](https://github.com/michael-ciniawsky/postcss-load-config), and configure [postcss-loader](https://github.com/postcss/postcss-loader) via `css.loaderOptions.postcss` in `vue.config.js`. + +The [autoprefixer](https://github.com/postcss/autoprefixer) plugin is enabled by default. To configure the browser targets, use the [browserslist](../guide/browser-compatibility.html#browserslist) field in `package.json`. + +::: tip Note on Vendor-prefixed CSS Rules +In the production build, Vue CLI optimizes your CSS and will drop unnecessary vendor-prefixed CSS rules based on your browser targets. With `autoprefixer` enabled by default, you should always use only non-prefixed CSS rules. +::: + +## CSS Modules + +You can [use CSS Modules in `*.vue` files](https://vue-loader.vuejs.org/en/features/css-modules.html) out of the box with `