summaryrefslogtreecommitdiff
path: root/resources/src/mediawiki.less/mediawiki.mixins.less
blob: 79549c33d52c1dcd61e60f5ae0e3251b8e697829 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// Common LESS mixin library for MediaWiki
//
// By default the folder containing this file is included in $wgResourceLoaderLESSImportPaths,
// which makes this file importable by all less files via '@import "mediawiki.mixins";'.
//
// The mixins included below are considered a public interface for MediaWiki extensions.
// The signatures of parametrized mixins should be kept as stable as possible.
//
// See <http://lesscss.org/#-mixins> for more information about how to write mixins.

.background-image(@url) {
	background-image: e('/* @embed */') url(@url);
}

.background-size(@width, @height) {
	// Vendor prefix for certain older opera browsers e.g. nintendo ds
	-o-background-size: @width @height;
	// Vendor prefix is added to support Android 2
	-webkit-background-size: @width @height;
	background-size: @width @height;
}


.vertical-gradient(@startColor: gray, @endColor: white, @startPos: 0, @endPos: 100%) {
	background-color: @endColor;
	background-image: -moz-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Firefox 3.6+
	background-image: -webkit-gradient( linear, left top, left bottom, color-stop( @startPos, @startColor ), color-stop( @endPos, @endColor ) ); // Safari 4+, Chrome 2+
	background-image: -webkit-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Safari 5.1+, Chrome 10+
	background-image: linear-gradient( @startColor @startPos, @endColor @endPos ); // Standard
}

// SVG support using a transparent gradient to guarantee cross-browser
// compatibility (browsers able to understand gradient syntax support also SVG).
// http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique
//
// We use gzip compression, which means that it is okay to embed twice.
//
// We do not embed the fallback image on the assumption that the gain for old browsers
// is not worth the harm done to modern ones.
.background-image-svg(@svg, @fallback) {
	background-image: url(@fallback);
	background-image: -webkit-linear-gradient(transparent, transparent), e('/* @embed */') url(@svg);
	background-image: linear-gradient(transparent, transparent), e('/* @embed */') url(@svg);
	// Do not serve SVG to Opera 12, bad rendering with border-radius or background-size (T87504)
	background-image: -o-linear-gradient(transparent, transparent), url(@fallback);
}

.list-style-image(@url) {
	list-style-image: e('/* @embed */') url(@url);
}

.list-style-image-svg(@svg, @fallback) {
	list-style-image: e('/* @embed */') url(@svg);
	/* Fallback to PNG bullet for IE 8 and below using CSS hack */
	list-style-image: e('/* @embed */') url(@fallback) e('\9');
}

.transition(@value) {
	-webkit-transition: @value; // Safari 3.1-6.0, iOS 3.2-6.1, Android 2.1-4.3
	-moz-transition: @value; // Firefox 4-15
	-o-transition: @value; // Opera 10.5-12.0
	transition: @value; // Chrome 26+, Firefox 16+, IE 10+, Safari 6.1+, Opera 12.1+, iOS 7+, Android 4.4+
}

.box-sizing(@value) {
	-webkit-box-sizing: @value; // Safari 3.1-5.0, iOS 3.2-4.3, Android 2.1-3.0
	-moz-box-sizing: @value; // Firefox 4-28,
	box-sizing: @value; // Chrome 10+, Firefox 29+, IE 8+, Safari 5.1+, Opera 10+, iOS 5+, Android 4+
}

.box-shadow(@value) {
	-webkit-box-shadow: @value; // Safari 3.1-5.0, iOS 3.2-4.3, Android 2.1-3.0
	box-shadow: @value; // Chrome 10+, Firefox 4+, IE 9+, Safari 5.1+, Opera 11+, iOS 5+, Android 4+
}

.column-count(@value) {
	-webkit-column-count: @value;
	-moz-column-count: @value;
	column-count: @value;
}

.column-width(@value) {
	-webkit-column-width: @value;// Chrome Any, Safari 3+, Opera 11.1+
	-moz-column-width: @value;// Firefox 1.5+
	column-width: @value;// IE 10+
}

.column-break-inside-avoid() {
	-webkit-column-break-inside: avoid; // Chrome Any, Safari 3+, Opera 11.1+
	page-break-inside: avoid; // Firefox 1.5+
	break-inside: avoid-column; // IE 10+
}