Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

453 строки
7.8 KiB

  1. @import '../../_global/styles/mixins';
  2. @import '../../_global/styles/vars';
  3. .gallery {
  4. --gallery-spacing: 8px;
  5. margin: var(--section-margin) 0;
  6. width: 100%;
  7. max-width: 880px;
  8. @media(min-width: 568px) {
  9. &.content-media-right {
  10. max-width: calc(50% - 15px);
  11. float: right;
  12. margin: 18px 0 20px 30px;
  13. @media(max-width: 767px) {
  14. max-width: calc(50% - 10px);
  15. margin: 14px 0 15px 20px;
  16. }
  17. &:first-child {
  18. margin-top: 0;
  19. }
  20. }
  21. &.content-media-left {
  22. max-width: calc(50% - 15px);
  23. float: left;
  24. margin: 18px 30px 20px 0;
  25. @media(max-width: 767px) {
  26. max-width: calc(50% - 10px);
  27. margin: 14px 20px 15px 0;
  28. }
  29. &:first-child {
  30. margin-top: 0;
  31. }
  32. }
  33. }
  34. .gallery-wrapper {
  35. display: flex;
  36. flex-wrap: wrap;
  37. margin: calc(var(--gallery-spacing) / -2);
  38. }
  39. .image {
  40. padding: calc(var(--gallery-spacing) / 2);
  41. flex: 1 1 100%;
  42. transition: 0.3s ease;
  43. transform: translate3d(0, 0, 0) scale(1);
  44. &.loading {
  45. opacity: 0;
  46. transform: translate3d(0, 0, 0) scale(0.9);
  47. }
  48. a {
  49. position: relative;
  50. display: block;
  51. background-color: var(--theme-color-primary-dimmed-04);
  52. @include focus-visible;
  53. transition: 0.2s ease;
  54. &::before {
  55. content: '';
  56. position: relative;
  57. display: block;
  58. padding-top: 66.666667%;
  59. }
  60. &:after {
  61. content: "";
  62. @include full-size;
  63. opacity: 0;
  64. transition: 0.3s ease;
  65. }
  66. }
  67. img {
  68. position: absolute;
  69. top: 0;
  70. left: 0;
  71. width: 100%;
  72. height: 100%;
  73. object-fit: cover;
  74. }
  75. .copyright {
  76. @include copyright;
  77. opacity: 1 !important;
  78. }
  79. }
  80. &[data-type="grid"] {
  81. .image {
  82. flex: 1 1 33.3333%;
  83. max-width: 33.3334%;
  84. @media(max-width: 567px) {
  85. flex: 1 1 50%;
  86. max-width: 50%;
  87. }
  88. }
  89. }
  90. &[data-type="first-image"], &[data-type="sinlge-image"] {
  91. .image a::after {
  92. display: none;
  93. }
  94. .btn {
  95. position: absolute;
  96. top: 0;
  97. right: 0;
  98. margin: 20px;
  99. }
  100. .image {
  101. transform: none;
  102. opacity: 1;
  103. position: relative;
  104. a {
  105. background-image: url('../../assets/img/preload.svg');
  106. background-size: 80px;
  107. background-position: center;
  108. background-repeat: no-repeat;
  109. display: block;
  110. }
  111. + .image {
  112. display: none;
  113. }
  114. }
  115. img {
  116. opacity: 0;
  117. transition: 0.3s ease;
  118. }
  119. &.loaded {
  120. img, .image-description, .image .copyright {
  121. opacity: 1;
  122. }
  123. }
  124. .gallery-wrapper {
  125. padding: 5px;
  126. > .image-description {
  127. font-weight: 400;
  128. font-size: 18px;
  129. line-height: 1.2;
  130. margin-top: 12px;
  131. }
  132. }
  133. img, .copyright, .image-description {
  134. opacity: 0;
  135. transition: 0.4s ease;
  136. }
  137. }
  138. &[data-type="masonry"] {
  139. .gallery-wrapper {
  140. flex-wrap: nowrap;
  141. align-items: flex-start;
  142. }
  143. .column {
  144. flex: 1 1 100%;
  145. }
  146. .image {
  147. a::before {
  148. @include full-size;
  149. padding: 0;
  150. }
  151. img {
  152. transition: 0.3s ease;
  153. opacity: 0;
  154. }
  155. &.loaded img {
  156. opacity: 1;
  157. }
  158. }
  159. }
  160. &[data-type='grid'] {
  161. .image:not(.loading):not(.loaded) {
  162. position: absolute;
  163. opacity: 0;
  164. pointer-events: none;
  165. }
  166. }
  167. &[data-type="masonry"], &[data-type="grid"] {
  168. .image-description {
  169. display: none !important;
  170. }
  171. .image a {
  172. overflow: hidden;
  173. &::after {
  174. @include icon-zoom;
  175. font-family: "Icons", sans-serif;
  176. display: flex;
  177. align-items: center;
  178. justify-content: center;
  179. z-index: 1;
  180. font-size: var(--icon-size);
  181. line-height: 1;
  182. color: var(--theme-color-white);
  183. opacity: 0;
  184. transition: 0.3s ease;
  185. }
  186. &::before {
  187. background-color: var(--theme-color-primary);
  188. opacity: 0;
  189. z-index: 1;
  190. transition: 0.3s ease;
  191. }
  192. img {
  193. transition: 0.3s ease;
  194. }
  195. &:hover, &.focus-visible:focus, &:focus-visible, &.-moz-focusring {
  196. &:before {
  197. opacity: 0.5;
  198. }
  199. &:after {
  200. opacity: 1;
  201. }
  202. img {
  203. transform: translate3d(0, 0, 0) scale(1.04);
  204. }
  205. }
  206. }
  207. }
  208. .button-wrapper {
  209. text-align: center;
  210. .btn {
  211. margin: 40px 0 0;
  212. @media(max-width: 767px) {
  213. margin-top: 24px;
  214. }
  215. }
  216. }
  217. &[data-infinite-scroll="true"] {
  218. .button-wrapper .btn {
  219. position: absolute;
  220. visibility: hidden;
  221. }
  222. }
  223. }
  224. .gallery-popup {
  225. position: fixed;
  226. top: 0;
  227. left: 0;
  228. width: 100%;
  229. height: calc(var(--viewport-height, 1vh) * 100);
  230. background-color: rgba(#0F1C28, 0.95);
  231. color: var(--theme-color-white);
  232. z-index: 100;
  233. @include hide;
  234. &.open {
  235. @include show;
  236. }
  237. .slide {
  238. &::before {
  239. content: '';
  240. position: absolute;
  241. width: 60px;
  242. height: 60px;
  243. top: 50%;
  244. left: 50%;
  245. margin: -30px;
  246. background-image: url('../../assets/img/preload.svg');
  247. background-size: 60px;
  248. filter: saturate(0) brightness(100);
  249. }
  250. }
  251. .image-box {
  252. position: relative;
  253. display: block;
  254. opacity: 1;
  255. max-width: 90%;
  256. transition: 0.3s ease;
  257. img {
  258. max-height: calc(var(--viewport-height, 1vh) * 74);
  259. @media(min-width: 1000px) {
  260. max-width: calc(100vw - 200px);
  261. }
  262. }
  263. .copyright {
  264. @include copyright;
  265. }
  266. }
  267. .text-box {
  268. color: var(--theme-color-white);
  269. font-size: 18px;
  270. display: flex;
  271. flex-direction: column;
  272. margin: 20px 20px -10px;
  273. .copyright {
  274. order: 1;
  275. font-size: 14px;
  276. font-style: italic;
  277. }
  278. @media(max-width: 767px) {
  279. font-size: 16px;
  280. }
  281. }
  282. .controls {
  283. .prev, .next {
  284. position: absolute;
  285. top: 50%;
  286. right: 0;
  287. display: block;
  288. width: 50px;
  289. height: 50px;
  290. font-size: 0;
  291. line-height: 0;
  292. text-align: center;
  293. padding: 10px 0;
  294. margin: -25px 15px;
  295. border: 0;
  296. background-color: transparent;
  297. color: white;
  298. cursor: pointer;
  299. &:before {
  300. @include icon-pfeil-rechts;
  301. font-family: "Icons", sans-serif;
  302. font-size: 30px;
  303. line-height: 1;
  304. }
  305. @media(max-width: 999px) {
  306. display: none;
  307. }
  308. }
  309. .prev {
  310. left: 0;
  311. transform: rotate(180deg);
  312. }
  313. .tabs {
  314. display: none;
  315. }
  316. .count {
  317. position: absolute;
  318. top: 25px;
  319. left: 50%;
  320. width: 120px;
  321. margin-left: -60px;
  322. text-align: center;
  323. font-size: 18px;
  324. span {
  325. margin: 0 5px;
  326. }
  327. }
  328. }
  329. .slide {
  330. position: relative;
  331. display: flex;
  332. flex-direction: column;
  333. justify-content: center;
  334. align-items: center;
  335. text-align: center;
  336. height: calc(var(--viewport-height, 1vh) * 100);
  337. transition: 0.4s linear;
  338. opacity: 1;
  339. &.preload .image-box {
  340. opacity: 0;
  341. }
  342. }
  343. .closer, .download {
  344. position: absolute;
  345. top: 0;
  346. width: 50px;
  347. height: 50px;
  348. font-size: 30px;
  349. line-height: 1;
  350. padding: 10px 0;
  351. color: var(--theme-color-white);
  352. background-color: transparent;
  353. margin: 15px;
  354. border: 0;
  355. cursor: pointer;
  356. z-index: 1;
  357. &:before {
  358. font-family: "Icons", sans-serif;
  359. }
  360. }
  361. .closer {
  362. right: 0;
  363. &::before {
  364. @include icon-schliessen;
  365. }
  366. }
  367. .download {
  368. left: 0;
  369. text-decoration: none;
  370. text-align: center;
  371. &::before {
  372. @include icon-download;
  373. }
  374. }
  375. a, button {
  376. @include focus-visible;
  377. }
  378. }
  379. .teaser, .slider {
  380. .gallery[data-type="first-image"] .image:before {
  381. padding-top: 66.6666%;
  382. }
  383. }