Любая функция, которую вы получите от языка программирования для конкретной предметной области SASS/SCSS
, STYLUS
, LESS
или любого другого, вы можете получить от CSS
изначально, и если вы хотите использовать functions
(= миксины) или другие функции, которые не поддерживаются CSS, используйте стандартный веб-сайт под названием JavaScript
:-)
Пример кода:
SASS
// _base.sass
$font-stack: Helvetica, sans-serif
$primary-color: #333
body
font: 100% $font-stack
color: $primary-color
/*******************************/
// styles.sass
@use 'base'
%message-shared
border: 1px solid #ccc
padding: 10px
color: #333
=transform($property)
-webkit-transform: $property
-ms-transform: $property
transform: $property
.box
+transform(rotate(30deg))
background-color: base.$primary-color
color: white
.message
@extend %message-shared
width: 600px / 960px * 100%
JAVASCRIPT
// base.css.js
module.exports = (var1 = 'font-stack', var2 = 'primary-color') => {
const value1 = 'Helvetica, sans-serif'
const value2 = '#333'
const css = `
:root {
--${var1}: ${value1};
--${var2}: ${value2};
}
body {
font: 100% var(--${var1});
color: var(--${var2});
}`
base[var1] = value1
base[var2] = value2
return { css, [var1]: value1, [var2]: value2 }
}
/*******************************/
// styles.css.js
const base = require('./base.css')()
const style = document.createElement('style')
const message_shared = `
border: 1px solid #ccc;
padding: 10px;
color: #333`;
function transform (property) {
return `
-webkit-transform: ${property};
-ms-transform: ${property};
transform: ${property};`
}
style.textContent = `
.box {
${transform('rotate(30deg)')}
background-color: ${base['primary-color']};
color: white;
}
.message {
${message_shared}
width: ${(600 / 960) *100}%;
}`