Project

General

Profile

1
// Name:            Position
2
// Description:     Utilities to position content
3
//
4
// Component:       `uk-position-absolute`
5
//                  `uk-position-relative`
6
//                  `uk-position-z-index`
7
//                  `uk-position-top`
8
//                  `uk-position-bottom`
9
//                  `uk-position-left`
10
//                  `uk-position-right`
11
//                  `uk-position-top-left`
12
//                  `uk-position-top-center`
13
//                  `uk-position-top-right`
14
//                  `uk-position-bottom-left`
15
//                  `uk-position-bottom-center`
16
//                  `uk-position-bottom-right`
17
//                  `uk-position-center`
18
//                  `uk-position-center-left`
19
//                  `uk-position-center-right`
20
//                  `uk-position-cover`
21
//
22
// Modifiers:       `uk-position-small`
23
//                  `uk-position-medium`
24
//
25
// ========================================================================
26

    
27

    
28
// Variables
29
// ========================================================================
30

    
31
@position-small-margin:                                @global-small-gutter;
32
@position-medium-margin:                               @global-gutter;
33

    
34

    
35
/* ========================================================================
36
   Component: Position
37
 ========================================================================== */
38

    
39

    
40
/* Directions
41
 ========================================================================== */
42

    
43
[class*='uk-position-top'],
44
[class*='uk-position-bottom'],
45
[class*='uk-position-left'],
46
[class*='uk-position-right'],
47
[class*='uk-position-center'] { position: absolute !important; }
48

    
49

    
50
/* Edges
51
 ========================================================================== */
52

    
53
/* Don't use `width: 100%` because it is wrong if the parent has padding. */
54
.uk-position-top {
55
    top: 0;
56
    left: 0;
57
    right: 0;
58
}
59

    
60
.uk-position-bottom {
61
    bottom: 0;
62
    left: 0;
63
    right: 0;
64
}
65

    
66
.uk-position-left {
67
    top: 0;
68
    bottom: 0;
69
    left: 0;
70
}
71

    
72
.uk-position-right {
73
    top: 0;
74
    bottom: 0;
75
    right: 0;
76
}
77

    
78

    
79
/* Corners
80
 ========================================================================== */
81

    
82
.uk-position-top-left {
83
    top: 0;
84
    left: 0;
85
}
86

    
87
.uk-position-top-right {
88
    top: 0;
89
    right: 0;
90
}
91

    
92
.uk-position-bottom-left {
93
    bottom: 0;
94
    left: 0;
95
}
96

    
97
.uk-position-bottom-right {
98
    bottom: 0;
99
    right: 0;
100
}
101

    
102
/*
103
 * Center
104
 * 1. Fix text wrapping if content is larger than 50% of the container (Not working in Firefox)
105
 * 2. Fix text wrapping for Firefox
106
 */
107

    
108
.uk-position-center {
109
    top: 50%;
110
    left: 50%;
111
    -webkit-transform: translate(-50%,-50%);
112
    transform: translate(-50%,-50%);
113
    /* 1 */
114
    display: table;
115
    /* 2 */
116
    width: -moz-max-content;
117
    max-width: 100%
118
}
119

    
120
/* Vertical */
121
.uk-position-center-left,
122
.uk-position-center-right {
123
    top: 50%;
124
    -webkit-transform: translateY(-50%);
125
    transform: translateY(-50%);
126
}
127

    
128
.uk-position-center-left { left: 0; }
129
.uk-position-center-right { right: 0; }
130

    
131
/* Horizontal */
132
.uk-position-top-center,
133
.uk-position-bottom-center {
134
    left: 50%;
135
    -webkit-transform: translateX(-50%);
136
    transform: translateX(-50%);
137
    /* 1 */
138
    display: table;
139
}
140

    
141
.uk-position-top-center { top: 0; }
142
.uk-position-bottom-center { bottom: 0; }
143

    
144

    
145
/* Cover
146
 ========================================================================== */
147

    
148
.uk-position-cover {
149
    position: absolute;
150
    top: 0;
151
    bottom: 0;
152
    left: 0;
153
    right: 0;
154
}
155

    
156

    
157
/* Utility
158
 ========================================================================== */
159

    
160
.uk-position-relative { position: relative !important; }
161

    
162
.uk-position-absolute { position: absolute !important; }
163

    
164
.uk-position-fixed { position: fixed !important; }
165

    
166
.uk-position-z-index { z-index: 1; }
167

    
168

    
169

    
170
/* Margin modifier
171
 ========================================================================== */
172

    
173
/*
174
 * Small
175
 */
176

    
177
.uk-position-small { margin: @position-small-margin; }
178

    
179
.uk-position-small.uk-position-center {
180
    -webkit-transform: translate(~'calc(-50% - @{position-small-margin})', ~'calc(-50% - @{position-small-margin})');
181
    transform: translate(~'calc(-50% - @{position-small-margin})', ~'calc(-50% - @{position-small-margin})');
182
}
183

    
184
.uk-position-small.uk-position-center-left,
185
.uk-position-small.uk-position-center-right {
186
    -webkit-transform: translateY(~'calc(-50% - @{position-small-margin})');
187
    transform: translateY(~'calc(-50% - @{position-small-margin})');
188
}
189

    
190
.uk-position-small.uk-position-top-center,
191
.uk-position-small.uk-position-bottom-center {
192
    -webkit-transform: translateX(~'calc(-50% - @{position-small-margin})');
193
    transform: translateX(~'calc(-50% - @{position-small-margin})');
194
}
195

    
196
/*
197
 * Medium
198
 */
199

    
200
.uk-position-medium { margin: @position-medium-margin; }
201

    
202
.uk-position-medium.uk-position-center {
203
    -webkit-transform: translate(~'calc(-50% - @{position-medium-margin})', ~'calc(-50% - @{position-medium-margin})');
204
    transform: translate(~'calc(-50% - @{position-medium-margin})', ~'calc(-50% - @{position-medium-margin})');
205
}
206

    
207
.uk-position-medium.uk-position-center-left,
208
.uk-position-medium.uk-position-center-right {
209
    -webkit-transform: translateY(~'calc(-50% - @{position-medium-margin})');
210
    transform: translateY(~'calc(-50% - @{position-medium-margin})');
211
}
212

    
213
.uk-position-medium.uk-position-top-center,
214
.uk-position-medium.uk-position-bottom-center {
215
    -webkit-transform: translateX(~'calc(-50% - @{position-medium-margin})');
216
    transform: translateX(~'calc(-50% - @{position-medium-margin})');
217
}
218

    
219

    
220
// Hooks
221
// ========================================================================
222

    
223
.hook-position-misc;
224

    
225
.hook-position-misc() {}
(45-45/66)