You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

529 lines
9.5 KiB

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