mirror of
https://github.com/flarum/framework.git
synced 2024-11-29 12:43:52 +08:00
40a6d77e74
- Extract shared Ember components into a “flarum-common” ember-cli addon. This can be used by both the forum + admin Ember apps, keeping things DRY - Move LESS styles into their own top-level directory and do a similar thing (extract common styles) - Add LESS/JS compilation and versioning to PHP (AssetManager) - Set up admin entry point (Theoretical) upgrade instructions: - Delete everything in [app_root]/public - Set up tooling in forum/admin Ember apps (npm install/update, bower install/update) and then build them (ember build) - php artisan vendor:publish - Upgrade flarum/flarum repo (slight change in a config file) - If you need to trigger a LESS/JS recompile, delete the .css/.js files in [app_root]/public/flarum. I set up LiveReload to do this for me when I change files in less/ or ember/ Todo: - Start writing admin app! - Remove bootstrap/font-awesome from repo and instead depend on their composer packages? Maybe? (Bower is not an option here)
270 lines
5.3 KiB
Plaintext
Executable File
270 lines
5.3 KiB
Plaintext
Executable File
//
|
|
// Carousel
|
|
// --------------------------------------------------
|
|
|
|
|
|
// Wrapper for the slide container and indicators
|
|
.carousel {
|
|
position: relative;
|
|
}
|
|
|
|
.carousel-inner {
|
|
position: relative;
|
|
overflow: hidden;
|
|
width: 100%;
|
|
|
|
> .item {
|
|
display: none;
|
|
position: relative;
|
|
.transition(.6s ease-in-out left);
|
|
|
|
// Account for jankitude on images
|
|
> img,
|
|
> a > img {
|
|
&:extend(.img-responsive);
|
|
line-height: 1;
|
|
}
|
|
|
|
// WebKit CSS3 transforms for supported devices
|
|
@media all and (transform-3d), (-webkit-transform-3d) {
|
|
.transition-transform(~'0.6s ease-in-out');
|
|
.backface-visibility(~'hidden');
|
|
.perspective(1000);
|
|
|
|
&.next,
|
|
&.active.right {
|
|
.translate3d(100%, 0, 0);
|
|
left: 0;
|
|
}
|
|
&.prev,
|
|
&.active.left {
|
|
.translate3d(-100%, 0, 0);
|
|
left: 0;
|
|
}
|
|
&.next.left,
|
|
&.prev.right,
|
|
&.active {
|
|
.translate3d(0, 0, 0);
|
|
left: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
> .active,
|
|
> .next,
|
|
> .prev {
|
|
display: block;
|
|
}
|
|
|
|
> .active {
|
|
left: 0;
|
|
}
|
|
|
|
> .next,
|
|
> .prev {
|
|
position: absolute;
|
|
top: 0;
|
|
width: 100%;
|
|
}
|
|
|
|
> .next {
|
|
left: 100%;
|
|
}
|
|
> .prev {
|
|
left: -100%;
|
|
}
|
|
> .next.left,
|
|
> .prev.right {
|
|
left: 0;
|
|
}
|
|
|
|
> .active.left {
|
|
left: -100%;
|
|
}
|
|
> .active.right {
|
|
left: 100%;
|
|
}
|
|
|
|
}
|
|
|
|
// Left/right controls for nav
|
|
// ---------------------------
|
|
|
|
.carousel-control {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
bottom: 0;
|
|
width: @carousel-control-width;
|
|
.opacity(@carousel-control-opacity);
|
|
font-size: @carousel-control-font-size;
|
|
color: @carousel-control-color;
|
|
text-align: center;
|
|
text-shadow: @carousel-text-shadow;
|
|
// We can't have this transition here because WebKit cancels the carousel
|
|
// animation if you trip this while in the middle of another animation.
|
|
|
|
// Set gradients for backgrounds
|
|
&.left {
|
|
#gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));
|
|
}
|
|
&.right {
|
|
left: auto;
|
|
right: 0;
|
|
#gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));
|
|
}
|
|
|
|
// Hover/focus state
|
|
&:hover,
|
|
&:focus {
|
|
outline: 0;
|
|
color: @carousel-control-color;
|
|
text-decoration: none;
|
|
.opacity(.9);
|
|
}
|
|
|
|
// Toggles
|
|
.icon-prev,
|
|
.icon-next,
|
|
.glyphicon-chevron-left,
|
|
.glyphicon-chevron-right {
|
|
position: absolute;
|
|
top: 50%;
|
|
z-index: 5;
|
|
display: inline-block;
|
|
}
|
|
.icon-prev,
|
|
.glyphicon-chevron-left {
|
|
left: 50%;
|
|
margin-left: -10px;
|
|
}
|
|
.icon-next,
|
|
.glyphicon-chevron-right {
|
|
right: 50%;
|
|
margin-right: -10px;
|
|
}
|
|
.icon-prev,
|
|
.icon-next {
|
|
width: 20px;
|
|
height: 20px;
|
|
margin-top: -10px;
|
|
line-height: 1;
|
|
font-family: serif;
|
|
}
|
|
|
|
|
|
.icon-prev {
|
|
&:before {
|
|
content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
|
|
}
|
|
}
|
|
.icon-next {
|
|
&:before {
|
|
content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Optional indicator pips
|
|
//
|
|
// Add an unordered list with the following class and add a list item for each
|
|
// slide your carousel holds.
|
|
|
|
.carousel-indicators {
|
|
position: absolute;
|
|
bottom: 10px;
|
|
left: 50%;
|
|
z-index: 15;
|
|
width: 60%;
|
|
margin-left: -30%;
|
|
padding-left: 0;
|
|
list-style: none;
|
|
text-align: center;
|
|
|
|
li {
|
|
display: inline-block;
|
|
width: 10px;
|
|
height: 10px;
|
|
margin: 1px;
|
|
text-indent: -999px;
|
|
border: 1px solid @carousel-indicator-border-color;
|
|
border-radius: 10px;
|
|
cursor: pointer;
|
|
|
|
// IE8-9 hack for event handling
|
|
//
|
|
// Internet Explorer 8-9 does not support clicks on elements without a set
|
|
// `background-color`. We cannot use `filter` since that's not viewed as a
|
|
// background color by the browser. Thus, a hack is needed.
|
|
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
|
|
//
|
|
// For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
|
|
// set alpha transparency for the best results possible.
|
|
background-color: #000 \9; // IE8
|
|
background-color: rgba(0,0,0,0); // IE9
|
|
}
|
|
.active {
|
|
margin: 0;
|
|
width: 12px;
|
|
height: 12px;
|
|
background-color: @carousel-indicator-active-bg;
|
|
}
|
|
}
|
|
|
|
// Optional captions
|
|
// -----------------------------
|
|
// Hidden by default for smaller viewports
|
|
.carousel-caption {
|
|
position: absolute;
|
|
left: 15%;
|
|
right: 15%;
|
|
bottom: 20px;
|
|
z-index: 10;
|
|
padding-top: 20px;
|
|
padding-bottom: 20px;
|
|
color: @carousel-caption-color;
|
|
text-align: center;
|
|
text-shadow: @carousel-text-shadow;
|
|
& .btn {
|
|
text-shadow: none; // No shadow for button elements in carousel-caption
|
|
}
|
|
}
|
|
|
|
|
|
// Scale up controls for tablets and up
|
|
@media screen and (min-width: @screen-sm-min) {
|
|
|
|
// Scale up the controls a smidge
|
|
.carousel-control {
|
|
.glyphicon-chevron-left,
|
|
.glyphicon-chevron-right,
|
|
.icon-prev,
|
|
.icon-next {
|
|
width: 30px;
|
|
height: 30px;
|
|
margin-top: -15px;
|
|
font-size: 30px;
|
|
}
|
|
.glyphicon-chevron-left,
|
|
.icon-prev {
|
|
margin-left: -15px;
|
|
}
|
|
.glyphicon-chevron-right,
|
|
.icon-next {
|
|
margin-right: -15px;
|
|
}
|
|
}
|
|
|
|
// Show and left align the captions
|
|
.carousel-caption {
|
|
left: 20%;
|
|
right: 20%;
|
|
padding-bottom: 30px;
|
|
}
|
|
|
|
// Move up the indicators
|
|
.carousel-indicators {
|
|
bottom: 20px;
|
|
}
|
|
}
|