├── about.html ├── contact.html ├── courses.html ├── css ├── bootstrap.min.css └── style.css ├── img ├── about.jpg ├── banner-1.jpg ├── banner-2.jpg ├── banner-2.png ├── banner-3.jpg ├── carousel-1.jpg ├── carousel-2.jpg ├── cat-1.jpg ├── cat-2.jpg ├── cat-3.jpg ├── cat-4.jpg ├── cat.png ├── cat1.png ├── cat2.png ├── cat3.png ├── cat4.png ├── cat5.png ├── cat6.png ├── cat7.png ├── cat8.png ├── course-1.jpg ├── course-10.jpg ├── course-11.jpg ├── course-12.png ├── course-2.jpg ├── course-3.jpg ├── course-4.jpg ├── course-5.jpg ├── course-6.jpg ├── course-7.jpg ├── course-8.jpg ├── course-9.jpg ├── icon.png ├── icon1.png ├── icon2.png ├── icon3.png ├── icon4.png ├── instructor-1.jpg ├── instructor-2.jpg ├── login.jpg ├── ready.jpg ├── signup.jpg ├── team-1.png ├── team-2.png ├── testimonial-1.jpg ├── testimonial-2.jpg ├── testimonial-3.jpg └── testimonial-4.jpg ├── index.html ├── instructor.html ├── js └── main.js ├── lib ├── animate │ ├── animate.css │ └── animate.min.css ├── easing │ ├── easing.js │ └── easing.min.js ├── owlcarousel │ ├── LICENSE │ ├── assets │ │ ├── ajax-loader.gif │ │ ├── owl.carousel.css │ │ ├── owl.carousel.min.css │ │ ├── owl.theme.default.css │ │ ├── owl.theme.default.min.css │ │ ├── owl.theme.green.css │ │ ├── owl.theme.green.min.css │ │ └── owl.video.play.png │ ├── owl.carousel.js │ └── owl.carousel.min.js ├── waypoints │ ├── links.php │ └── waypoints.min.js └── wow │ ├── wow.js │ └── wow.min.js ├── login.html ├── preview.jpg ├── readme.md ├── scss ├── bootstrap.scss └── bootstrap │ └── scss │ ├── _accordion.scss │ ├── _alert.scss │ ├── _badge.scss │ ├── _breadcrumb.scss │ ├── _button-group.scss │ ├── _buttons.scss │ ├── _card.scss │ ├── _carousel.scss │ ├── _close.scss │ ├── _containers.scss │ ├── _dropdown.scss │ ├── _forms.scss │ ├── _functions.scss │ ├── _grid.scss │ ├── _helpers.scss │ ├── _images.scss │ ├── _list-group.scss │ ├── _mixins.scss │ ├── _modal.scss │ ├── _nav.scss │ ├── _navbar.scss │ ├── _offcanvas.scss │ ├── _pagination.scss │ ├── _popover.scss │ ├── _progress.scss │ ├── _reboot.scss │ ├── _root.scss │ ├── _spinners.scss │ ├── _tables.scss │ ├── _toasts.scss │ ├── _tooltip.scss │ ├── _transitions.scss │ ├── _type.scss │ ├── _utilities.scss │ ├── _variables.scss │ ├── bootstrap-grid.scss │ ├── bootstrap-reboot.scss │ ├── bootstrap-utilities.scss │ ├── bootstrap.scss │ ├── forms │ ├── _floating-labels.scss │ ├── _form-check.scss │ ├── _form-control.scss │ ├── _form-range.scss │ ├── _form-select.scss │ ├── _form-text.scss │ ├── _input-group.scss │ ├── _labels.scss │ └── _validation.scss │ ├── helpers │ ├── _clearfix.scss │ ├── _colored-links.scss │ ├── _position.scss │ ├── _ratio.scss │ ├── _stretched-link.scss │ ├── _text-truncation.scss │ └── _visually-hidden.scss │ ├── mixins │ ├── _alert.scss │ ├── _border-radius.scss │ ├── _box-shadow.scss │ ├── _breakpoints.scss │ ├── _buttons.scss │ ├── _caret.scss │ ├── _clearfix.scss │ ├── _color-scheme.scss │ ├── _container.scss │ ├── _deprecate.scss │ ├── _forms.scss │ ├── _gradients.scss │ ├── _grid.scss │ ├── _image.scss │ ├── _list-group.scss │ ├── _lists.scss │ ├── _pagination.scss │ ├── _reset-text.scss │ ├── _resize.scss │ ├── _table-variants.scss │ ├── _text-truncate.scss │ ├── _transition.scss │ ├── _utilities.scss │ └── _visually-hidden.scss │ ├── utilities │ └── _api.scss │ └── vendor │ └── _rfs.scss ├── signup.html ├── single.html ├── team.html └── testimonial.html /img/about.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/about.jpg -------------------------------------------------------------------------------- /img/banner-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/banner-1.jpg -------------------------------------------------------------------------------- /img/banner-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/banner-2.jpg -------------------------------------------------------------------------------- /img/banner-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/banner-2.png -------------------------------------------------------------------------------- /img/banner-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/banner-3.jpg -------------------------------------------------------------------------------- /img/carousel-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/carousel-1.jpg -------------------------------------------------------------------------------- /img/carousel-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/carousel-2.jpg -------------------------------------------------------------------------------- /img/cat-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat-1.jpg -------------------------------------------------------------------------------- /img/cat-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat-2.jpg -------------------------------------------------------------------------------- /img/cat-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat-3.jpg -------------------------------------------------------------------------------- /img/cat-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat-4.jpg -------------------------------------------------------------------------------- /img/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat.png -------------------------------------------------------------------------------- /img/cat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat1.png -------------------------------------------------------------------------------- /img/cat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat2.png -------------------------------------------------------------------------------- /img/cat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat3.png -------------------------------------------------------------------------------- /img/cat4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat4.png -------------------------------------------------------------------------------- /img/cat5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat5.png -------------------------------------------------------------------------------- /img/cat6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat6.png -------------------------------------------------------------------------------- /img/cat7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat7.png -------------------------------------------------------------------------------- /img/cat8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/cat8.png -------------------------------------------------------------------------------- /img/course-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-1.jpg -------------------------------------------------------------------------------- /img/course-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-10.jpg -------------------------------------------------------------------------------- /img/course-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-11.jpg -------------------------------------------------------------------------------- /img/course-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-12.png -------------------------------------------------------------------------------- /img/course-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-2.jpg -------------------------------------------------------------------------------- /img/course-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-3.jpg -------------------------------------------------------------------------------- /img/course-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-4.jpg -------------------------------------------------------------------------------- /img/course-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-5.jpg -------------------------------------------------------------------------------- /img/course-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-6.jpg -------------------------------------------------------------------------------- /img/course-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-7.jpg -------------------------------------------------------------------------------- /img/course-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-8.jpg -------------------------------------------------------------------------------- /img/course-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/course-9.jpg -------------------------------------------------------------------------------- /img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/icon.png -------------------------------------------------------------------------------- /img/icon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/icon1.png -------------------------------------------------------------------------------- /img/icon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/icon2.png -------------------------------------------------------------------------------- /img/icon3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/icon3.png -------------------------------------------------------------------------------- /img/icon4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/icon4.png -------------------------------------------------------------------------------- /img/instructor-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/instructor-1.jpg -------------------------------------------------------------------------------- /img/instructor-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/instructor-2.jpg -------------------------------------------------------------------------------- /img/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/login.jpg -------------------------------------------------------------------------------- /img/ready.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/ready.jpg -------------------------------------------------------------------------------- /img/signup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/signup.jpg -------------------------------------------------------------------------------- /img/team-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/team-1.png -------------------------------------------------------------------------------- /img/team-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/team-2.png -------------------------------------------------------------------------------- /img/testimonial-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/testimonial-1.jpg -------------------------------------------------------------------------------- /img/testimonial-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/testimonial-2.jpg -------------------------------------------------------------------------------- /img/testimonial-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/testimonial-3.jpg -------------------------------------------------------------------------------- /img/testimonial-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/img/testimonial-4.jpg -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | "use strict"; 3 | 4 | // Spinner 5 | var spinner = function () { 6 | setTimeout(function () { 7 | if ($('#spinner').length > 0) { 8 | $('#spinner').removeClass('show'); 9 | } 10 | }, 1); 11 | }; 12 | spinner(); 13 | 14 | 15 | // Initiate the wowjs 16 | new WOW().init(); 17 | 18 | 19 | // Sticky Navbar 20 | $(window).scroll(function () { 21 | if ($(this).scrollTop() > 300) { 22 | $('.sticky-top').css('top', '0px'); 23 | } else { 24 | $('.sticky-top').css('top', '-100px'); 25 | } 26 | }); 27 | 28 | 29 | // Dropdown on mouse hover 30 | const $dropdown = $(".dropdown"); 31 | const $dropdownToggle = $(".dropdown-toggle"); 32 | const $dropdownMenu = $(".dropdown-menu"); 33 | const showClass = "show"; 34 | 35 | $(window).on("load resize", function () { 36 | if (this.matchMedia("(min-width: 992px)").matches) { 37 | $dropdown.hover( 38 | function () { 39 | const $this = $(this); 40 | $this.addClass(showClass); 41 | $this.find($dropdownToggle).attr("aria-expanded", "true"); 42 | $this.find($dropdownMenu).addClass(showClass); 43 | }, 44 | function () { 45 | const $this = $(this); 46 | $this.removeClass(showClass); 47 | $this.find($dropdownToggle).attr("aria-expanded", "false"); 48 | $this.find($dropdownMenu).removeClass(showClass); 49 | } 50 | ); 51 | } else { 52 | $dropdown.off("mouseenter mouseleave"); 53 | } 54 | }); 55 | 56 | 57 | // Back to top button 58 | $(window).scroll(function () { 59 | if ($(this).scrollTop() > 300) { 60 | $('.back-to-top').fadeIn('slow'); 61 | } else { 62 | $('.back-to-top').fadeOut('slow'); 63 | } 64 | }); 65 | $('.back-to-top').click(function () { 66 | $('html, body').animate({ scrollTop: 0 }, 1500, 'easeInOutExpo'); 67 | return false; 68 | }); 69 | 70 | 71 | // Header carousel 72 | $(".header-carousel").owlCarousel({ 73 | autoplay: true, 74 | smartSpeed: 1500, 75 | items: 1, 76 | dots: false, 77 | loop: true, 78 | nav: true, 79 | navText: [ 80 | '', 81 | '' 82 | ] 83 | }); 84 | 85 | 86 | // Testimonials carousel 87 | $(".testimonial-carousel").owlCarousel({ 88 | autoplay: true, 89 | smartSpeed: 1000, 90 | center: true, 91 | margin: 24, 92 | dots: true, 93 | loop: true, 94 | nav: false, 95 | responsive: { 96 | 0: { 97 | items: 1 98 | }, 99 | 768: { 100 | items: 2 101 | }, 102 | 992: { 103 | items: 3 104 | } 105 | } 106 | }); 107 | 108 | })(jQuery); 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /lib/easing/easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * Open source under the BSD License. 4 | * Copyright © 2008 George McGinley Smith 5 | * All rights reserved. 6 | * https://raw.github.com/gdsmith/jquery-easing/master/LICENSE 7 | */ 8 | 9 | (function (factory) { 10 | if (typeof define === "function" && define.amd) { 11 | define(['jquery'], function ($) { 12 | return factory($); 13 | }); 14 | } else if (typeof module === "object" && typeof module.exports === "object") { 15 | exports = factory(require('jquery')); 16 | } else { 17 | factory(jQuery); 18 | } 19 | })(function($){ 20 | 21 | // Preserve the original jQuery "swing" easing as "jswing" 22 | if (typeof $.easing !== 'undefined') { 23 | $.easing['jswing'] = $.easing['swing']; 24 | } 25 | 26 | var pow = Math.pow, 27 | sqrt = Math.sqrt, 28 | sin = Math.sin, 29 | cos = Math.cos, 30 | PI = Math.PI, 31 | c1 = 1.70158, 32 | c2 = c1 * 1.525, 33 | c3 = c1 + 1, 34 | c4 = ( 2 * PI ) / 3, 35 | c5 = ( 2 * PI ) / 4.5; 36 | 37 | // x is the fraction of animation progress, in the range 0..1 38 | function bounceOut(x) { 39 | var n1 = 7.5625, 40 | d1 = 2.75; 41 | if ( x < 1/d1 ) { 42 | return n1*x*x; 43 | } else if ( x < 2/d1 ) { 44 | return n1*(x-=(1.5/d1))*x + .75; 45 | } else if ( x < 2.5/d1 ) { 46 | return n1*(x-=(2.25/d1))*x + .9375; 47 | } else { 48 | return n1*(x-=(2.625/d1))*x + .984375; 49 | } 50 | } 51 | 52 | $.extend( $.easing, 53 | { 54 | def: 'easeOutQuad', 55 | swing: function (x) { 56 | return $.easing[$.easing.def](x); 57 | }, 58 | easeInQuad: function (x) { 59 | return x * x; 60 | }, 61 | easeOutQuad: function (x) { 62 | return 1 - ( 1 - x ) * ( 1 - x ); 63 | }, 64 | easeInOutQuad: function (x) { 65 | return x < 0.5 ? 66 | 2 * x * x : 67 | 1 - pow( -2 * x + 2, 2 ) / 2; 68 | }, 69 | easeInCubic: function (x) { 70 | return x * x * x; 71 | }, 72 | easeOutCubic: function (x) { 73 | return 1 - pow( 1 - x, 3 ); 74 | }, 75 | easeInOutCubic: function (x) { 76 | return x < 0.5 ? 77 | 4 * x * x * x : 78 | 1 - pow( -2 * x + 2, 3 ) / 2; 79 | }, 80 | easeInQuart: function (x) { 81 | return x * x * x * x; 82 | }, 83 | easeOutQuart: function (x) { 84 | return 1 - pow( 1 - x, 4 ); 85 | }, 86 | easeInOutQuart: function (x) { 87 | return x < 0.5 ? 88 | 8 * x * x * x * x : 89 | 1 - pow( -2 * x + 2, 4 ) / 2; 90 | }, 91 | easeInQuint: function (x) { 92 | return x * x * x * x * x; 93 | }, 94 | easeOutQuint: function (x) { 95 | return 1 - pow( 1 - x, 5 ); 96 | }, 97 | easeInOutQuint: function (x) { 98 | return x < 0.5 ? 99 | 16 * x * x * x * x * x : 100 | 1 - pow( -2 * x + 2, 5 ) / 2; 101 | }, 102 | easeInSine: function (x) { 103 | return 1 - cos( x * PI/2 ); 104 | }, 105 | easeOutSine: function (x) { 106 | return sin( x * PI/2 ); 107 | }, 108 | easeInOutSine: function (x) { 109 | return -( cos( PI * x ) - 1 ) / 2; 110 | }, 111 | easeInExpo: function (x) { 112 | return x === 0 ? 0 : pow( 2, 10 * x - 10 ); 113 | }, 114 | easeOutExpo: function (x) { 115 | return x === 1 ? 1 : 1 - pow( 2, -10 * x ); 116 | }, 117 | easeInOutExpo: function (x) { 118 | return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? 119 | pow( 2, 20 * x - 10 ) / 2 : 120 | ( 2 - pow( 2, -20 * x + 10 ) ) / 2; 121 | }, 122 | easeInCirc: function (x) { 123 | return 1 - sqrt( 1 - pow( x, 2 ) ); 124 | }, 125 | easeOutCirc: function (x) { 126 | return sqrt( 1 - pow( x - 1, 2 ) ); 127 | }, 128 | easeInOutCirc: function (x) { 129 | return x < 0.5 ? 130 | ( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 : 131 | ( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2; 132 | }, 133 | easeInElastic: function (x) { 134 | return x === 0 ? 0 : x === 1 ? 1 : 135 | -pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 ); 136 | }, 137 | easeOutElastic: function (x) { 138 | return x === 0 ? 0 : x === 1 ? 1 : 139 | pow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1; 140 | }, 141 | easeInOutElastic: function (x) { 142 | return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? 143 | -( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 : 144 | pow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1; 145 | }, 146 | easeInBack: function (x) { 147 | return c3 * x * x * x - c1 * x * x; 148 | }, 149 | easeOutBack: function (x) { 150 | return 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 ); 151 | }, 152 | easeInOutBack: function (x) { 153 | return x < 0.5 ? 154 | ( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 : 155 | ( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2; 156 | }, 157 | easeInBounce: function (x) { 158 | return 1 - bounceOut( 1 - x ); 159 | }, 160 | easeOutBounce: bounceOut, 161 | easeInOutBounce: function (x) { 162 | return x < 0.5 ? 163 | ( 1 - bounceOut( 1 - 2 * x ) ) / 2 : 164 | ( 1 + bounceOut( 2 * x - 1 ) ) / 2; 165 | } 166 | }); 167 | 168 | }); 169 | -------------------------------------------------------------------------------- /lib/easing/easing.min.js: -------------------------------------------------------------------------------- 1 | !function(n){"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e)}):"object"==typeof module&&"object"==typeof module.exports?exports=n(require("jquery")):n(jQuery)}(function(n){function e(n){var e=7.5625,t=2.75;return n<1/t?e*n*n:n<2/t?e*(n-=1.5/t)*n+.75:n<2.5/t?e*(n-=2.25/t)*n+.9375:e*(n-=2.625/t)*n+.984375}void 0!==n.easing&&(n.easing.jswing=n.easing.swing);var t=Math.pow,u=Math.sqrt,r=Math.sin,i=Math.cos,a=Math.PI,c=1.70158,o=1.525*c,s=2*a/3,f=2*a/4.5;n.extend(n.easing,{def:"easeOutQuad",swing:function(e){return n.easing[n.easing.def](e)},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-t(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-t(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-t(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-t(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-t(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-t(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-t(-2*n+2,5)/2},easeInSine:function(n){return 1-i(n*a/2)},easeOutSine:function(n){return r(n*a/2)},easeInOutSine:function(n){return-(i(a*n)-1)/2},easeInExpo:function(n){return 0===n?0:t(2,10*n-10)},easeOutExpo:function(n){return 1===n?1:1-t(2,-10*n)},easeInOutExpo:function(n){return 0===n?0:1===n?1:n<.5?t(2,20*n-10)/2:(2-t(2,-20*n+10))/2},easeInCirc:function(n){return 1-u(1-t(n,2))},easeOutCirc:function(n){return u(1-t(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-u(1-t(2*n,2)))/2:(u(1-t(-2*n+2,2))+1)/2},easeInElastic:function(n){return 0===n?0:1===n?1:-t(2,10*n-10)*r((10*n-10.75)*s)},easeOutElastic:function(n){return 0===n?0:1===n?1:t(2,-10*n)*r((10*n-.75)*s)+1},easeInOutElastic:function(n){return 0===n?0:1===n?1:n<.5?-(t(2,20*n-10)*r((20*n-11.125)*f))/2:t(2,-20*n+10)*r((20*n-11.125)*f)/2+1},easeInBack:function(n){return(c+1)*n*n*n-c*n*n},easeOutBack:function(n){return 1+(c+1)*t(n-1,3)+c*t(n-1,2)},easeInOutBack:function(n){return n<.5?t(2*n,2)*(7.189819*n-o)/2:(t(2*n-2,2)*((o+1)*(2*n-2)+o)+2)/2},easeInBounce:function(n){return 1-e(1-n)},easeOutBounce:e,easeInOutBounce:function(n){return n<.5?(1-e(1-2*n))/2:(1+e(2*n-1))/2}})}); 2 | -------------------------------------------------------------------------------- /lib/owlcarousel/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Owl 2 | Modified work Copyright 2016 David Deutsch 3 | 4 | Permission is hereby granted, free of charge, to any person 5 | obtaining a copy of this software and associated documentation 6 | files (the "Software"), to deal in the Software without 7 | restriction, including without limitation the rights to use, 8 | copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /lib/owlcarousel/assets/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/lib/owlcarousel/assets/ajax-loader.gif -------------------------------------------------------------------------------- /lib/owlcarousel/assets/owl.carousel.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 5 | */ 6 | /* 7 | * Owl Carousel - Core 8 | */ 9 | .owl-carousel { 10 | display: none; 11 | width: 100%; 12 | -webkit-tap-highlight-color: transparent; 13 | /* position relative and z-index fix webkit rendering fonts issue */ 14 | position: relative; 15 | z-index: 1; } 16 | .owl-carousel .owl-stage { 17 | position: relative; 18 | -ms-touch-action: pan-Y; 19 | -moz-backface-visibility: hidden; 20 | /* fix firefox animation glitch */ } 21 | .owl-carousel .owl-stage:after { 22 | content: "."; 23 | display: block; 24 | clear: both; 25 | visibility: hidden; 26 | line-height: 0; 27 | height: 0; } 28 | .owl-carousel .owl-stage-outer { 29 | position: relative; 30 | overflow: hidden; 31 | /* fix for flashing background */ 32 | -webkit-transform: translate3d(0px, 0px, 0px); } 33 | .owl-carousel .owl-wrapper, 34 | .owl-carousel .owl-item { 35 | -webkit-backface-visibility: hidden; 36 | -moz-backface-visibility: hidden; 37 | -ms-backface-visibility: hidden; 38 | -webkit-transform: translate3d(0, 0, 0); 39 | -moz-transform: translate3d(0, 0, 0); 40 | -ms-transform: translate3d(0, 0, 0); } 41 | .owl-carousel .owl-item { 42 | position: relative; 43 | min-height: 1px; 44 | float: left; 45 | -webkit-backface-visibility: hidden; 46 | -webkit-tap-highlight-color: transparent; 47 | -webkit-touch-callout: none; } 48 | .owl-carousel .owl-item img { 49 | display: block; 50 | width: 100%; } 51 | .owl-carousel .owl-nav.disabled, 52 | .owl-carousel .owl-dots.disabled { 53 | display: none; } 54 | .owl-carousel .owl-nav .owl-prev, 55 | .owl-carousel .owl-nav .owl-next, 56 | .owl-carousel .owl-dot { 57 | cursor: pointer; 58 | cursor: hand; 59 | -webkit-user-select: none; 60 | -khtml-user-select: none; 61 | -moz-user-select: none; 62 | -ms-user-select: none; 63 | user-select: none; } 64 | .owl-carousel.owl-loaded { 65 | display: block; } 66 | .owl-carousel.owl-loading { 67 | opacity: 0; 68 | display: block; } 69 | .owl-carousel.owl-hidden { 70 | opacity: 0; } 71 | .owl-carousel.owl-refresh .owl-item { 72 | visibility: hidden; } 73 | .owl-carousel.owl-drag .owl-item { 74 | -webkit-user-select: none; 75 | -moz-user-select: none; 76 | -ms-user-select: none; 77 | user-select: none; } 78 | .owl-carousel.owl-grab { 79 | cursor: move; 80 | cursor: grab; } 81 | .owl-carousel.owl-rtl { 82 | direction: rtl; } 83 | .owl-carousel.owl-rtl .owl-item { 84 | float: right; } 85 | 86 | /* No Js */ 87 | .no-js .owl-carousel { 88 | display: block; } 89 | 90 | /* 91 | * Owl Carousel - Animate Plugin 92 | */ 93 | .owl-carousel .animated { 94 | animation-duration: 1000ms; 95 | animation-fill-mode: both; } 96 | 97 | .owl-carousel .owl-animated-in { 98 | z-index: 0; } 99 | 100 | .owl-carousel .owl-animated-out { 101 | z-index: 1; } 102 | 103 | .owl-carousel .fadeOut { 104 | animation-name: fadeOut; } 105 | 106 | @keyframes fadeOut { 107 | 0% { 108 | opacity: 1; } 109 | 100% { 110 | opacity: 0; } } 111 | 112 | /* 113 | * Owl Carousel - Auto Height Plugin 114 | */ 115 | .owl-height { 116 | transition: height 500ms ease-in-out; } 117 | 118 | /* 119 | * Owl Carousel - Lazy Load Plugin 120 | */ 121 | .owl-carousel .owl-item .owl-lazy { 122 | opacity: 0; 123 | transition: opacity 400ms ease; } 124 | 125 | .owl-carousel .owl-item img.owl-lazy { 126 | transform-style: preserve-3d; } 127 | 128 | /* 129 | * Owl Carousel - Video Plugin 130 | */ 131 | .owl-carousel .owl-video-wrapper { 132 | position: relative; 133 | height: 100%; 134 | background: #000; } 135 | 136 | .owl-carousel .owl-video-play-icon { 137 | position: absolute; 138 | height: 80px; 139 | width: 80px; 140 | left: 50%; 141 | top: 50%; 142 | margin-left: -40px; 143 | margin-top: -40px; 144 | background: url("owl.video.play.png") no-repeat; 145 | cursor: pointer; 146 | z-index: 1; 147 | -webkit-backface-visibility: hidden; 148 | transition: transform 100ms ease; } 149 | 150 | .owl-carousel .owl-video-play-icon:hover { 151 | -ms-transform: scale(1.3, 1.3); 152 | transform: scale(1.3, 1.3); } 153 | 154 | .owl-carousel .owl-video-playing .owl-video-tn, 155 | .owl-carousel .owl-video-playing .owl-video-play-icon { 156 | display: none; } 157 | 158 | .owl-carousel .owl-video-tn { 159 | opacity: 0; 160 | height: 100%; 161 | background-position: center center; 162 | background-repeat: no-repeat; 163 | background-size: contain; 164 | transition: opacity 400ms ease; } 165 | 166 | .owl-carousel .owl-video-frame { 167 | position: relative; 168 | z-index: 1; 169 | height: 100%; 170 | width: 100%; } 171 | -------------------------------------------------------------------------------- /lib/owlcarousel/assets/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 5 | */ 6 | .owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} -------------------------------------------------------------------------------- /lib/owlcarousel/assets/owl.theme.default.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 5 | */ 6 | /* 7 | * Default theme - Owl Carousel CSS File 8 | */ 9 | .owl-theme .owl-nav { 10 | margin-top: 10px; 11 | text-align: center; 12 | -webkit-tap-highlight-color: transparent; } 13 | .owl-theme .owl-nav [class*='owl-'] { 14 | color: #FFF; 15 | font-size: 14px; 16 | margin: 5px; 17 | padding: 4px 7px; 18 | background: #D6D6D6; 19 | display: inline-block; 20 | cursor: pointer; 21 | border-radius: 3px; } 22 | .owl-theme .owl-nav [class*='owl-']:hover { 23 | background: #869791; 24 | color: #FFF; 25 | text-decoration: none; } 26 | .owl-theme .owl-nav .disabled { 27 | opacity: 0.5; 28 | cursor: default; } 29 | 30 | .owl-theme .owl-nav.disabled + .owl-dots { 31 | margin-top: 10px; } 32 | 33 | .owl-theme .owl-dots { 34 | text-align: center; 35 | -webkit-tap-highlight-color: transparent; } 36 | .owl-theme .owl-dots .owl-dot { 37 | display: inline-block; 38 | zoom: 1; 39 | *display: inline; } 40 | .owl-theme .owl-dots .owl-dot span { 41 | width: 10px; 42 | height: 10px; 43 | margin: 5px 7px; 44 | background: #D6D6D6; 45 | display: block; 46 | -webkit-backface-visibility: visible; 47 | transition: opacity 200ms ease; 48 | border-radius: 30px; } 49 | .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span { 50 | background: #869791; } 51 | -------------------------------------------------------------------------------- /lib/owlcarousel/assets/owl.theme.default.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 5 | */ 6 | .owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} -------------------------------------------------------------------------------- /lib/owlcarousel/assets/owl.theme.green.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 5 | */ 6 | /* 7 | * Green theme - Owl Carousel CSS File 8 | */ 9 | .owl-theme .owl-nav { 10 | margin-top: 10px; 11 | text-align: center; 12 | -webkit-tap-highlight-color: transparent; } 13 | .owl-theme .owl-nav [class*='owl-'] { 14 | color: #FFF; 15 | font-size: 14px; 16 | margin: 5px; 17 | padding: 4px 7px; 18 | background: #D6D6D6; 19 | display: inline-block; 20 | cursor: pointer; 21 | border-radius: 3px; } 22 | .owl-theme .owl-nav [class*='owl-']:hover { 23 | background: #4DC7A0; 24 | color: #FFF; 25 | text-decoration: none; } 26 | .owl-theme .owl-nav .disabled { 27 | opacity: 0.5; 28 | cursor: default; } 29 | 30 | .owl-theme .owl-nav.disabled + .owl-dots { 31 | margin-top: 10px; } 32 | 33 | .owl-theme .owl-dots { 34 | text-align: center; 35 | -webkit-tap-highlight-color: transparent; } 36 | .owl-theme .owl-dots .owl-dot { 37 | display: inline-block; 38 | zoom: 1; 39 | *display: inline; } 40 | .owl-theme .owl-dots .owl-dot span { 41 | width: 10px; 42 | height: 10px; 43 | margin: 5px 7px; 44 | background: #D6D6D6; 45 | display: block; 46 | -webkit-backface-visibility: visible; 47 | transition: opacity 200ms ease; 48 | border-radius: 30px; } 49 | .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span { 50 | background: #4DC7A0; } 51 | -------------------------------------------------------------------------------- /lib/owlcarousel/assets/owl.theme.green.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 5 | */ 6 | .owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#4DC7A0;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#4DC7A0} -------------------------------------------------------------------------------- /lib/owlcarousel/assets/owl.video.play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/lib/owlcarousel/assets/owl.video.play.png -------------------------------------------------------------------------------- /lib/waypoints/links.php: -------------------------------------------------------------------------------- 1 | 'lib/waypoints/waypoints.min.js' 4 | ); 5 | ?> 6 | -------------------------------------------------------------------------------- /lib/waypoints/waypoints.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Waypoints - 4.0.1 3 | Copyright © 2011-2016 Caleb Troughton 4 | Licensed under the MIT license. 5 | https://github.com/imakewebthings/waypoints/blob/master/licenses.txt 6 | */ 7 | !function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,n.windowContext||(n.windowContext=!0,n.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var l=o.oldScroll=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=Math.floor(y+l-f),h=w=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}(); -------------------------------------------------------------------------------- /lib/wow/wow.min.js: -------------------------------------------------------------------------------- 1 | /*! WOW wow.js - v1.3.0 - 2016-10-04 2 | * https://wowjs.uk 3 | * Copyright (c) 2016 Thomas Grainger; Licensed MIT */!function(a,b){if("function"==typeof define&&define.amd)define(["module","exports"],b);else if("undefined"!=typeof exports)b(module,exports);else{var c={exports:{}};b(c,c.exports),a.WOW=c.exports}}(this,function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function d(a,b){return b.indexOf(a)>=0}function e(a,b){for(var c in b)if(null==a[c]){var d=b[c];a[c]=d}return a}function f(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)}function g(a){var b=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],c=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],d=arguments.length<=3||void 0===arguments[3]?null:arguments[3],e=void 0;return null!=document.createEvent?(e=document.createEvent("CustomEvent"),e.initCustomEvent(a,b,c,d)):null!=document.createEventObject?(e=document.createEventObject(),e.eventType=a):e.eventName=a,e}function h(a,b){null!=a.dispatchEvent?a.dispatchEvent(b):b in(null!=a)?a[b]():"on"+b in(null!=a)&&a["on"+b]()}function i(a,b,c){null!=a.addEventListener?a.addEventListener(b,c,!1):null!=a.attachEvent?a.attachEvent("on"+b,c):a[b]=c}function j(a,b,c){null!=a.removeEventListener?a.removeEventListener(b,c,!1):null!=a.detachEvent?a.detachEvent("on"+b,c):delete a[b]}function k(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight}Object.defineProperty(b,"__esModule",{value:!0});var l,m,n=function(){function a(a,b){for(var c=0;c=0){var b=a.target||a.srcElement;b.className=b.className.replace(this.config.animateClass,"").trim()}}},{key:"customStyle",value:function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a}},{key:"vendorSet",value:function(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];a[""+c]=d;for(var e=0;e=e&&f>=c}},{key:"disabled",value:function(){return!this.config.mobile&&f(navigator.userAgent)}}]),a}();b["default"]=r,a.exports=b["default"]}); 4 | -------------------------------------------------------------------------------- /preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keerti1924/E-Learning-Website-HTML-CSS/89d84eba8cfd8432ae0ef63445e6dcc08b939ee9/preview.jpg -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # E-Learning Website using HTML5, CSS3, Bootstrap5 and JavaScript 2 | 3 | ![E-Learning Website](preview.jpg) 4 | 5 | The project involves the creation of an e-learning website using HTML, CSS, Bootstrap 5, and JavaScript. The website aims to provide a user-friendly and responsive platform for learners to access educational content. 6 | 7 | 8 | ## Introduction 9 | 10 | Secret Coder is an e-learning website designed to provide a user-friendly and responsive platform for learners to access educational content. The project incorporates HTML, CSS, Bootstrap 5, and JavaScript to create an interactive and visually appealing learning experience. 11 | 12 | ## Features 13 | 14 | - Responsive design using Bootstrap 5. 15 | - Structured course catalog with detailed descriptions. 16 | - Interactive lessons. 17 | - User can register and login. 18 | - User authentication for personalized learning experiences. 19 | - Instructor application form. 20 | - User can also contact us. 21 | 22 | ## Getting Started 23 | 24 | ### Prerequisites 25 | 26 | Before you begin, ensure you have the following prerequisites: 27 | 28 | - Web browser (e.g., Chrome, Firefox, Safari) 29 | - Text editor (e.g., Visual Studio Code, Sublime Text) 30 | 31 | ### Installation 32 | 33 | 1. Clone the repository: 34 | ```bash 35 | git clone https://github.com/keerti-1924/E-Learning-Website-HTML-CSS.git 36 | 37 | 2. Open the project in your preferred text editor. 38 | 3. Launch the `index.html` file in a web browser. 39 | 40 | ## Technologies Used 41 | 42 | - HTML 43 | - CSS 44 | - Bootstrap 5 45 | - JavaScript 46 | 47 | 📱 Moreover, I've ensured that the website is fully responsive on all screens, making it accessible and user-friendly across various devices. 📱💡 48 | 49 | ## Contributing 50 | 51 | Contributions, issues, and feature requests are welcome! Feel free to check the [issues page](/issues). 52 | 53 | ## Show your support 54 | 55 | Give a ⭐️ if you like this project! 56 | 57 | 58 | ## License 59 | 60 | This project is **free to use** and does not contains any license. -------------------------------------------------------------------------------- /scss/bootstrap.scss: -------------------------------------------------------------------------------- 1 | /******* Customized Bootstrap ********/ 2 | 3 | $primary: #06BBCC; 4 | $light: #F0FBFC; 5 | $dark: #181d38; 6 | 7 | $font-family-base: 'Heebo', sans-serif; 8 | 9 | $headings-font-family: 'Nunito', sans-serif; 10 | 11 | $body-color: #52565b; 12 | 13 | $headings-color: $dark; 14 | 15 | $headings-font-weight: 700; 16 | 17 | $display-font-weight: 800; 18 | 19 | $enable-responsive-font-sizes: true; 20 | 21 | $border-radius: 0px; 22 | 23 | $link-decoration: none; 24 | 25 | $enable-negative-margins: true; 26 | 27 | @import "bootstrap/scss/bootstrap"; -------------------------------------------------------------------------------- /scss/bootstrap/scss/_accordion.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .accordion-button { 6 | position: relative; 7 | display: flex; 8 | align-items: center; 9 | width: 100%; 10 | padding: $accordion-button-padding-y $accordion-button-padding-x; 11 | @include font-size($font-size-base); 12 | color: $accordion-button-color; 13 | text-align: left; // Reset button style 14 | background-color: $accordion-button-bg; 15 | border: 0; 16 | @include border-radius(0); 17 | overflow-anchor: none; 18 | @include transition($accordion-transition); 19 | 20 | &:not(.collapsed) { 21 | color: $accordion-button-active-color; 22 | background-color: $accordion-button-active-bg; 23 | box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color; 24 | 25 | &::after { 26 | background-image: escape-svg($accordion-button-active-icon); 27 | transform: $accordion-icon-transform; 28 | } 29 | } 30 | 31 | // Accordion icon 32 | &::after { 33 | flex-shrink: 0; 34 | width: $accordion-icon-width; 35 | height: $accordion-icon-width; 36 | margin-left: auto; 37 | content: ""; 38 | background-image: escape-svg($accordion-button-icon); 39 | background-repeat: no-repeat; 40 | background-size: $accordion-icon-width; 41 | @include transition($accordion-icon-transition); 42 | } 43 | 44 | &:hover { 45 | z-index: 2; 46 | } 47 | 48 | &:focus { 49 | z-index: 3; 50 | border-color: $accordion-button-focus-border-color; 51 | outline: 0; 52 | box-shadow: $accordion-button-focus-box-shadow; 53 | } 54 | } 55 | 56 | .accordion-header { 57 | margin-bottom: 0; 58 | } 59 | 60 | .accordion-item { 61 | background-color: $accordion-bg; 62 | border: $accordion-border-width solid $accordion-border-color; 63 | 64 | &:first-of-type { 65 | @include border-top-radius($accordion-border-radius); 66 | 67 | .accordion-button { 68 | @include border-top-radius($accordion-inner-border-radius); 69 | } 70 | } 71 | 72 | &:not(:first-of-type) { 73 | border-top: 0; 74 | } 75 | 76 | // Only set a border-radius on the last item if the accordion is collapsed 77 | &:last-of-type { 78 | @include border-bottom-radius($accordion-border-radius); 79 | 80 | .accordion-button { 81 | &.collapsed { 82 | @include border-bottom-radius($accordion-inner-border-radius); 83 | } 84 | } 85 | 86 | .accordion-collapse { 87 | @include border-bottom-radius($accordion-border-radius); 88 | } 89 | } 90 | } 91 | 92 | .accordion-body { 93 | padding: $accordion-body-padding-y $accordion-body-padding-x; 94 | } 95 | 96 | 97 | // Flush accordion items 98 | // 99 | // Remove borders and border-radius to keep accordion items edge-to-edge. 100 | 101 | .accordion-flush { 102 | .accordion-collapse { 103 | border-width: 0; 104 | } 105 | 106 | .accordion-item { 107 | border-right: 0; 108 | border-left: 0; 109 | @include border-radius(0); 110 | 111 | &:first-child { border-top: 0; } 112 | &:last-child { border-bottom: 0; } 113 | 114 | .accordion-button { 115 | @include border-radius(0); 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $alert-dismissible-padding-r; 31 | 32 | // Adjust close link position 33 | .btn-close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | z-index: $stretched-link-z-index + 1; 38 | padding: $alert-padding-y * 1.25 $alert-padding-x; 39 | } 40 | } 41 | 42 | 43 | // scss-docs-start alert-modifiers 44 | // Generate contextual modifier classes for colorizing the alert. 45 | 46 | @each $state, $value in $theme-colors { 47 | $alert-background: shift-color($value, $alert-bg-scale); 48 | $alert-border: shift-color($value, $alert-border-scale); 49 | $alert-color: shift-color($value, $alert-color-scale); 50 | @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) { 51 | $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale)); 52 | } 53 | .alert-#{$state} { 54 | @include alert-variant($alert-background, $alert-border, $alert-color); 55 | } 56 | } 57 | // scss-docs-end alert-modifiers 58 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | color: $badge-color; 13 | text-align: center; 14 | white-space: nowrap; 15 | vertical-align: baseline; 16 | @include border-radius($badge-border-radius); 17 | @include gradient-bg(); 18 | 19 | // Empty badges collapse automatically 20 | &:empty { 21 | display: none; 22 | } 23 | } 24 | 25 | // Quick fix for badges in buttons 26 | .btn .badge { 27 | position: relative; 28 | top: -1px; 29 | } 30 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | @include font-size($breadcrumb-font-size); 7 | list-style: none; 8 | background-color: $breadcrumb-bg; 9 | @include border-radius($breadcrumb-border-radius); 10 | } 11 | 12 | .breadcrumb-item { 13 | // The separator between breadcrumbs (by default, a forward-slash: "/") 14 | + .breadcrumb-item { 15 | padding-left: $breadcrumb-item-padding-x; 16 | 17 | &::before { 18 | float: left; // Suppress inline spacings and underlining of the separator 19 | padding-right: $breadcrumb-item-padding-x; 20 | color: $breadcrumb-divider-color; 21 | content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"}; 22 | } 23 | } 24 | 25 | &.active { 26 | color: $breadcrumb-active-color; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_button-group.scss: -------------------------------------------------------------------------------- 1 | // Make the div behave like a button 2 | .btn-group, 3 | .btn-group-vertical { 4 | position: relative; 5 | display: inline-flex; 6 | vertical-align: middle; // match .btn alignment given font-size hack above 7 | 8 | > .btn { 9 | position: relative; 10 | flex: 1 1 auto; 11 | } 12 | 13 | // Bring the hover, focused, and "active" buttons to the front to overlay 14 | // the borders properly 15 | > .btn-check:checked + .btn, 16 | > .btn-check:focus + .btn, 17 | > .btn:hover, 18 | > .btn:focus, 19 | > .btn:active, 20 | > .btn.active { 21 | z-index: 1; 22 | } 23 | } 24 | 25 | // Optional: Group multiple button groups together for a toolbar 26 | .btn-toolbar { 27 | display: flex; 28 | flex-wrap: wrap; 29 | justify-content: flex-start; 30 | 31 | .input-group { 32 | width: auto; 33 | } 34 | } 35 | 36 | .btn-group { 37 | // Prevent double borders when buttons are next to each other 38 | > .btn:not(:first-child), 39 | > .btn-group:not(:first-child) { 40 | margin-left: -$btn-border-width; 41 | } 42 | 43 | // Reset rounded corners 44 | > .btn:not(:last-child):not(.dropdown-toggle), 45 | > .btn-group:not(:last-child) > .btn { 46 | @include border-end-radius(0); 47 | } 48 | 49 | // The left radius should be 0 if the button is: 50 | // - the "third or more" child 51 | // - the second child and the previous element isn't `.btn-check` (making it the first child visually) 52 | // - part of a btn-group which isn't the first child 53 | > .btn:nth-child(n + 3), 54 | > :not(.btn-check) + .btn, 55 | > .btn-group:not(:first-child) > .btn { 56 | @include border-start-radius(0); 57 | } 58 | } 59 | 60 | // Sizing 61 | // 62 | // Remix the default button sizing classes into new ones for easier manipulation. 63 | 64 | .btn-group-sm > .btn { @extend .btn-sm; } 65 | .btn-group-lg > .btn { @extend .btn-lg; } 66 | 67 | 68 | // 69 | // Split button dropdowns 70 | // 71 | 72 | .dropdown-toggle-split { 73 | padding-right: $btn-padding-x * .75; 74 | padding-left: $btn-padding-x * .75; 75 | 76 | &::after, 77 | .dropup &::after, 78 | .dropend &::after { 79 | margin-left: 0; 80 | } 81 | 82 | .dropstart &::before { 83 | margin-right: 0; 84 | } 85 | } 86 | 87 | .btn-sm + .dropdown-toggle-split { 88 | padding-right: $btn-padding-x-sm * .75; 89 | padding-left: $btn-padding-x-sm * .75; 90 | } 91 | 92 | .btn-lg + .dropdown-toggle-split { 93 | padding-right: $btn-padding-x-lg * .75; 94 | padding-left: $btn-padding-x-lg * .75; 95 | } 96 | 97 | 98 | // The clickable button for toggling the menu 99 | // Set the same inset shadow as the :active state 100 | .btn-group.show .dropdown-toggle { 101 | @include box-shadow($btn-active-box-shadow); 102 | 103 | // Show no shadow for `.btn-link` since it has no other button styles. 104 | &.btn-link { 105 | @include box-shadow(none); 106 | } 107 | } 108 | 109 | 110 | // 111 | // Vertical button groups 112 | // 113 | 114 | .btn-group-vertical { 115 | flex-direction: column; 116 | align-items: flex-start; 117 | justify-content: center; 118 | 119 | > .btn, 120 | > .btn-group { 121 | width: 100%; 122 | } 123 | 124 | > .btn:not(:first-child), 125 | > .btn-group:not(:first-child) { 126 | margin-top: -$btn-border-width; 127 | } 128 | 129 | // Reset rounded corners 130 | > .btn:not(:last-child):not(.dropdown-toggle), 131 | > .btn-group:not(:last-child) > .btn { 132 | @include border-bottom-radius(0); 133 | } 134 | 135 | > .btn ~ .btn, 136 | > .btn-group:not(:first-child) > .btn { 137 | @include border-top-radius(0); 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_buttons.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .btn { 6 | display: inline-block; 7 | font-family: $btn-font-family; 8 | font-weight: $btn-font-weight; 9 | line-height: $btn-line-height; 10 | color: $body-color; 11 | text-align: center; 12 | text-decoration: if($link-decoration == none, null, none); 13 | white-space: $btn-white-space; 14 | vertical-align: middle; 15 | cursor: if($enable-button-pointers, pointer, null); 16 | user-select: none; 17 | background-color: transparent; 18 | border: $btn-border-width solid transparent; 19 | @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius); 20 | @include transition($btn-transition); 21 | 22 | &:hover { 23 | color: $body-color; 24 | text-decoration: if($link-hover-decoration == underline, none, null); 25 | } 26 | 27 | .btn-check:focus + &, 28 | &:focus { 29 | outline: 0; 30 | box-shadow: $btn-focus-box-shadow; 31 | } 32 | 33 | .btn-check:checked + &, 34 | .btn-check:active + &, 35 | &:active, 36 | &.active { 37 | @include box-shadow($btn-active-box-shadow); 38 | 39 | &:focus { 40 | @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow); 41 | } 42 | } 43 | 44 | &:disabled, 45 | &.disabled, 46 | fieldset:disabled & { 47 | pointer-events: none; 48 | opacity: $btn-disabled-opacity; 49 | @include box-shadow(none); 50 | } 51 | } 52 | 53 | 54 | // 55 | // Alternate buttons 56 | // 57 | 58 | // scss-docs-start btn-variant-loops 59 | @each $color, $value in $theme-colors { 60 | .btn-#{$color} { 61 | @include button-variant($value, $value); 62 | } 63 | } 64 | 65 | @each $color, $value in $theme-colors { 66 | .btn-outline-#{$color} { 67 | @include button-outline-variant($value); 68 | } 69 | } 70 | // scss-docs-end btn-variant-loops 71 | 72 | 73 | // 74 | // Link buttons 75 | // 76 | 77 | // Make a button look and behave like a link 78 | .btn-link { 79 | font-weight: $font-weight-normal; 80 | color: $btn-link-color; 81 | text-decoration: $link-decoration; 82 | 83 | &:hover { 84 | color: $btn-link-hover-color; 85 | text-decoration: $link-hover-decoration; 86 | } 87 | 88 | &:focus { 89 | text-decoration: $link-hover-decoration; 90 | } 91 | 92 | &:disabled, 93 | &.disabled { 94 | color: $btn-link-disabled-color; 95 | } 96 | 97 | // No need for an active state here 98 | } 99 | 100 | 101 | // 102 | // Button Sizes 103 | // 104 | 105 | .btn-lg { 106 | @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg); 107 | } 108 | 109 | .btn-sm { 110 | @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm); 111 | } 112 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_card.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .card { 6 | position: relative; 7 | display: flex; 8 | flex-direction: column; 9 | min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106 10 | height: $card-height; 11 | word-wrap: break-word; 12 | background-color: $card-bg; 13 | background-clip: border-box; 14 | border: $card-border-width solid $card-border-color; 15 | @include border-radius($card-border-radius); 16 | 17 | > hr { 18 | margin-right: 0; 19 | margin-left: 0; 20 | } 21 | 22 | > .list-group { 23 | border-top: inherit; 24 | border-bottom: inherit; 25 | 26 | &:first-child { 27 | border-top-width: 0; 28 | @include border-top-radius($card-inner-border-radius); 29 | } 30 | 31 | &:last-child { 32 | border-bottom-width: 0; 33 | @include border-bottom-radius($card-inner-border-radius); 34 | } 35 | } 36 | 37 | // Due to specificity of the above selector (`.card > .list-group`), we must 38 | // use a child selector here to prevent double borders. 39 | > .card-header + .list-group, 40 | > .list-group + .card-footer { 41 | border-top: 0; 42 | } 43 | } 44 | 45 | .card-body { 46 | // Enable `flex-grow: 1` for decks and groups so that card blocks take up 47 | // as much space as possible, ensuring footers are aligned to the bottom. 48 | flex: 1 1 auto; 49 | padding: $card-spacer-y $card-spacer-x; 50 | color: $card-color; 51 | } 52 | 53 | .card-title { 54 | margin-bottom: $card-title-spacer-y; 55 | } 56 | 57 | .card-subtitle { 58 | margin-top: -$card-title-spacer-y / 2; 59 | margin-bottom: 0; 60 | } 61 | 62 | .card-text:last-child { 63 | margin-bottom: 0; 64 | } 65 | 66 | .card-link { 67 | &:hover { 68 | text-decoration: none; 69 | } 70 | 71 | + .card-link { 72 | margin-left: $card-spacer-x; 73 | } 74 | } 75 | 76 | // 77 | // Optional textual caps 78 | // 79 | 80 | .card-header { 81 | padding: $card-cap-padding-y $card-cap-padding-x; 82 | margin-bottom: 0; // Removes the default margin-bottom of 83 | color: $card-cap-color; 84 | background-color: $card-cap-bg; 85 | border-bottom: $card-border-width solid $card-border-color; 86 | 87 | &:first-child { 88 | @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0); 89 | } 90 | } 91 | 92 | .card-footer { 93 | padding: $card-cap-padding-y $card-cap-padding-x; 94 | color: $card-cap-color; 95 | background-color: $card-cap-bg; 96 | border-top: $card-border-width solid $card-border-color; 97 | 98 | &:last-child { 99 | @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius); 100 | } 101 | } 102 | 103 | 104 | // 105 | // Header navs 106 | // 107 | 108 | .card-header-tabs { 109 | margin-right: -$card-cap-padding-x / 2; 110 | margin-bottom: -$card-cap-padding-y; 111 | margin-left: -$card-cap-padding-x / 2; 112 | border-bottom: 0; 113 | 114 | @if $nav-tabs-link-active-bg != $card-bg { 115 | .nav-link.active { 116 | background-color: $card-bg; 117 | border-bottom-color: $card-bg; 118 | } 119 | } 120 | } 121 | 122 | .card-header-pills { 123 | margin-right: -$card-cap-padding-x / 2; 124 | margin-left: -$card-cap-padding-x / 2; 125 | } 126 | 127 | // Card image 128 | .card-img-overlay { 129 | position: absolute; 130 | top: 0; 131 | right: 0; 132 | bottom: 0; 133 | left: 0; 134 | padding: $card-img-overlay-padding; 135 | @include border-radius($card-inner-border-radius); 136 | } 137 | 138 | .card-img, 139 | .card-img-top, 140 | .card-img-bottom { 141 | width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch 142 | } 143 | 144 | .card-img, 145 | .card-img-top { 146 | @include border-top-radius($card-inner-border-radius); 147 | } 148 | 149 | .card-img, 150 | .card-img-bottom { 151 | @include border-bottom-radius($card-inner-border-radius); 152 | } 153 | 154 | 155 | // 156 | // Card groups 157 | // 158 | 159 | .card-group { 160 | // The child selector allows nested `.card` within `.card-group` 161 | // to display properly. 162 | > .card { 163 | margin-bottom: $card-group-margin; 164 | } 165 | 166 | @include media-breakpoint-up(sm) { 167 | display: flex; 168 | flex-flow: row wrap; 169 | // The child selector allows nested `.card` within `.card-group` 170 | // to display properly. 171 | > .card { 172 | // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4 173 | flex: 1 0 0%; 174 | margin-bottom: 0; 175 | 176 | + .card { 177 | margin-left: 0; 178 | border-left: 0; 179 | } 180 | 181 | // Handle rounded corners 182 | @if $enable-rounded { 183 | &:not(:last-child) { 184 | @include border-end-radius(0); 185 | 186 | .card-img-top, 187 | .card-header { 188 | // stylelint-disable-next-line property-disallowed-list 189 | border-top-right-radius: 0; 190 | } 191 | .card-img-bottom, 192 | .card-footer { 193 | // stylelint-disable-next-line property-disallowed-list 194 | border-bottom-right-radius: 0; 195 | } 196 | } 197 | 198 | &:not(:first-child) { 199 | @include border-start-radius(0); 200 | 201 | .card-img-top, 202 | .card-header { 203 | // stylelint-disable-next-line property-disallowed-list 204 | border-top-left-radius: 0; 205 | } 206 | .card-img-bottom, 207 | .card-footer { 208 | // stylelint-disable-next-line property-disallowed-list 209 | border-bottom-left-radius: 0; 210 | } 211 | } 212 | } 213 | } 214 | } 215 | } 216 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_carousel.scss: -------------------------------------------------------------------------------- 1 | // Notes on the classes: 2 | // 3 | // 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically) 4 | // even when their scroll action started on a carousel, but for compatibility (with Firefox) 5 | // we're preventing all actions instead 6 | // 2. The .carousel-item-start and .carousel-item-end is used to indicate where 7 | // the active slide is heading. 8 | // 3. .active.carousel-item is the current slide. 9 | // 4. .active.carousel-item-start and .active.carousel-item-end is the current 10 | // slide in its in-transition state. Only one of these occurs at a time. 11 | // 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end 12 | // is the upcoming slide in transition. 13 | 14 | .carousel { 15 | position: relative; 16 | } 17 | 18 | .carousel.pointer-event { 19 | touch-action: pan-y; 20 | } 21 | 22 | .carousel-inner { 23 | position: relative; 24 | width: 100%; 25 | overflow: hidden; 26 | @include clearfix(); 27 | } 28 | 29 | .carousel-item { 30 | position: relative; 31 | display: none; 32 | float: left; 33 | width: 100%; 34 | margin-right: -100%; 35 | backface-visibility: hidden; 36 | @include transition($carousel-transition); 37 | } 38 | 39 | .carousel-item.active, 40 | .carousel-item-next, 41 | .carousel-item-prev { 42 | display: block; 43 | } 44 | 45 | /* rtl:begin:ignore */ 46 | .carousel-item-next:not(.carousel-item-start), 47 | .active.carousel-item-end { 48 | transform: translateX(100%); 49 | } 50 | 51 | .carousel-item-prev:not(.carousel-item-end), 52 | .active.carousel-item-start { 53 | transform: translateX(-100%); 54 | } 55 | 56 | /* rtl:end:ignore */ 57 | 58 | 59 | // 60 | // Alternate transitions 61 | // 62 | 63 | .carousel-fade { 64 | .carousel-item { 65 | opacity: 0; 66 | transition-property: opacity; 67 | transform: none; 68 | } 69 | 70 | .carousel-item.active, 71 | .carousel-item-next.carousel-item-start, 72 | .carousel-item-prev.carousel-item-end { 73 | z-index: 1; 74 | opacity: 1; 75 | } 76 | 77 | .active.carousel-item-start, 78 | .active.carousel-item-end { 79 | z-index: 0; 80 | opacity: 0; 81 | @include transition(opacity 0s $carousel-transition-duration); 82 | } 83 | } 84 | 85 | 86 | // 87 | // Left/right controls for nav 88 | // 89 | 90 | .carousel-control-prev, 91 | .carousel-control-next { 92 | position: absolute; 93 | top: 0; 94 | bottom: 0; 95 | z-index: 1; 96 | // Use flex for alignment (1-3) 97 | display: flex; // 1. allow flex styles 98 | align-items: center; // 2. vertically center contents 99 | justify-content: center; // 3. horizontally center contents 100 | width: $carousel-control-width; 101 | padding: 0; 102 | color: $carousel-control-color; 103 | text-align: center; 104 | background: none; 105 | border: 0; 106 | opacity: $carousel-control-opacity; 107 | @include transition($carousel-control-transition); 108 | 109 | // Hover/focus state 110 | &:hover, 111 | &:focus { 112 | color: $carousel-control-color; 113 | text-decoration: none; 114 | outline: 0; 115 | opacity: $carousel-control-hover-opacity; 116 | } 117 | } 118 | .carousel-control-prev { 119 | left: 0; 120 | background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null); 121 | } 122 | .carousel-control-next { 123 | right: 0; 124 | background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null); 125 | } 126 | 127 | // Icons for within 128 | .carousel-control-prev-icon, 129 | .carousel-control-next-icon { 130 | display: inline-block; 131 | width: $carousel-control-icon-width; 132 | height: $carousel-control-icon-width; 133 | background-repeat: no-repeat; 134 | background-position: 50%; 135 | background-size: 100% 100%; 136 | } 137 | 138 | /* rtl:options: { 139 | "autoRename": true, 140 | "stringMap":[ { 141 | "name" : "prev-next", 142 | "search" : "prev", 143 | "replace" : "next" 144 | } ] 145 | } */ 146 | .carousel-control-prev-icon { 147 | background-image: escape-svg($carousel-control-prev-icon-bg); 148 | } 149 | .carousel-control-next-icon { 150 | background-image: escape-svg($carousel-control-next-icon-bg); 151 | } 152 | 153 | // Optional indicator pips/controls 154 | // 155 | // Add a container (such as a list) with the following class and add an item (ideally a focusable control, 156 | // like a button) with data-bs-target for each slide your carousel holds. 157 | 158 | .carousel-indicators { 159 | position: absolute; 160 | right: 0; 161 | bottom: 0; 162 | left: 0; 163 | z-index: 2; 164 | display: flex; 165 | justify-content: center; 166 | padding: 0; 167 | // Use the .carousel-control's width as margin so we don't overlay those 168 | margin-right: $carousel-control-width; 169 | margin-bottom: 1rem; 170 | margin-left: $carousel-control-width; 171 | list-style: none; 172 | 173 | [data-bs-target] { 174 | box-sizing: content-box; 175 | flex: 0 1 auto; 176 | width: $carousel-indicator-width; 177 | height: $carousel-indicator-height; 178 | padding: 0; 179 | margin-right: $carousel-indicator-spacer; 180 | margin-left: $carousel-indicator-spacer; 181 | text-indent: -999px; 182 | cursor: pointer; 183 | background-color: $carousel-indicator-active-bg; 184 | background-clip: padding-box; 185 | border: 0; 186 | // Use transparent borders to increase the hit area by 10px on top and bottom. 187 | border-top: $carousel-indicator-hit-area-height solid transparent; 188 | border-bottom: $carousel-indicator-hit-area-height solid transparent; 189 | opacity: $carousel-indicator-opacity; 190 | @include transition($carousel-indicator-transition); 191 | } 192 | 193 | .active { 194 | opacity: $carousel-indicator-active-opacity; 195 | } 196 | } 197 | 198 | 199 | // Optional captions 200 | // 201 | // 202 | 203 | .carousel-caption { 204 | position: absolute; 205 | right: (100% - $carousel-caption-width) / 2; 206 | bottom: $carousel-caption-spacer; 207 | left: (100% - $carousel-caption-width) / 2; 208 | padding-top: $carousel-caption-padding-y; 209 | padding-bottom: $carousel-caption-padding-y; 210 | color: $carousel-caption-color; 211 | text-align: center; 212 | } 213 | 214 | // Dark mode carousel 215 | 216 | .carousel-dark { 217 | .carousel-control-prev-icon, 218 | .carousel-control-next-icon { 219 | filter: $carousel-dark-control-icon-filter; 220 | } 221 | 222 | .carousel-indicators [data-bs-target] { 223 | background-color: $carousel-dark-indicator-active-bg; 224 | } 225 | 226 | .carousel-caption { 227 | color: $carousel-dark-caption-color; 228 | } 229 | } 230 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_close.scss: -------------------------------------------------------------------------------- 1 | // transparent background and border properties included for button version. 2 | // iOS requires the button element instead of an anchor tag. 3 | // If you want the anchor version, it requires `href="#"`. 4 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 5 | 6 | .btn-close { 7 | box-sizing: content-box; 8 | width: $btn-close-width; 9 | height: $btn-close-height; 10 | padding: $btn-close-padding-y $btn-close-padding-x; 11 | color: $btn-close-color; 12 | background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements 13 | border: 0; // for button elements 14 | @include border-radius(); 15 | opacity: $btn-close-opacity; 16 | 17 | // Override 's hover style 18 | &:hover { 19 | color: $btn-close-color; 20 | text-decoration: none; 21 | opacity: $btn-close-hover-opacity; 22 | } 23 | 24 | &:focus { 25 | outline: 0; 26 | box-shadow: $btn-close-focus-shadow; 27 | opacity: $btn-close-focus-opacity; 28 | } 29 | 30 | &:disabled, 31 | &.disabled { 32 | pointer-events: none; 33 | user-select: none; 34 | opacity: $btn-close-disabled-opacity; 35 | } 36 | } 37 | 38 | .btn-close-white { 39 | filter: $btn-close-white-filter; 40 | } 41 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_containers.scss: -------------------------------------------------------------------------------- 1 | // Container widths 2 | // 3 | // Set the container width, and override it for fixed navbars in media queries. 4 | 5 | @if $enable-grid-classes { 6 | // Single container class with breakpoint max-widths 7 | .container, 8 | // 100% wide container at all breakpoints 9 | .container-fluid { 10 | @include make-container(); 11 | } 12 | 13 | // Responsive containers that are 100% wide until a breakpoint 14 | @each $breakpoint, $container-max-width in $container-max-widths { 15 | .container-#{$breakpoint} { 16 | @extend .container-fluid; 17 | } 18 | 19 | @include media-breakpoint-up($breakpoint, $grid-breakpoints) { 20 | %responsive-container-#{$breakpoint} { 21 | max-width: $container-max-width; 22 | } 23 | 24 | // Extend each breakpoint which is smaller or equal to the current breakpoint 25 | $extend-breakpoint: true; 26 | 27 | @each $name, $width in $grid-breakpoints { 28 | @if ($extend-breakpoint) { 29 | .container#{breakpoint-infix($name, $grid-breakpoints)} { 30 | @extend %responsive-container-#{$breakpoint}; 31 | } 32 | 33 | // Once the current breakpoint is reached, stop extending 34 | @if ($breakpoint == $name) { 35 | $extend-breakpoint: false; 36 | } 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/_dropdown.scss: -------------------------------------------------------------------------------- 1 | // The dropdown wrapper (`
`) 2 | .dropup, 3 | .dropend, 4 | .dropdown, 5 | .dropstart { 6 | position: relative; 7 | } 8 | 9 | .dropdown-toggle { 10 | white-space: nowrap; 11 | 12 | // Generate the caret automatically 13 | @include caret(); 14 | } 15 | 16 | // The dropdown menu 17 | .dropdown-menu { 18 | position: absolute; 19 | z-index: $zindex-dropdown; 20 | display: none; // none by default, but block on "open" of the menu 21 | min-width: $dropdown-min-width; 22 | padding: $dropdown-padding-y $dropdown-padding-x; 23 | margin: 0; // Override default margin of ul 24 | @include font-size($dropdown-font-size); 25 | color: $dropdown-color; 26 | text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) 27 | list-style: none; 28 | background-color: $dropdown-bg; 29 | background-clip: padding-box; 30 | border: $dropdown-border-width solid $dropdown-border-color; 31 | @include border-radius($dropdown-border-radius); 32 | @include box-shadow($dropdown-box-shadow); 33 | 34 | &[data-bs-popper] { 35 | top: 100%; 36 | left: 0; 37 | margin-top: $dropdown-spacer; 38 | } 39 | } 40 | 41 | // scss-docs-start responsive-breakpoints 42 | // We deliberately hardcode the `bs-` prefix because we check 43 | // this custom property in JS to determine Popper's positioning 44 | 45 | @each $breakpoint in map-keys($grid-breakpoints) { 46 | @include media-breakpoint-up($breakpoint) { 47 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 48 | 49 | .dropdown-menu#{$infix}-start { 50 | --bs-position: start; 51 | 52 | &[data-bs-popper] { 53 | right: auto #{"/* rtl:ignore */"}; 54 | left: 0 #{"/* rtl:ignore */"}; 55 | } 56 | } 57 | 58 | .dropdown-menu#{$infix}-end { 59 | --bs-position: end; 60 | 61 | &[data-bs-popper] { 62 | right: 0 #{"/* rtl:ignore */"}; 63 | left: auto #{"/* rtl:ignore */"}; 64 | } 65 | } 66 | } 67 | } 68 | // scss-docs-end responsive-breakpoints 69 | 70 | // Allow for dropdowns to go bottom up (aka, dropup-menu) 71 | // Just add .dropup after the standard .dropdown class and you're set. 72 | .dropup { 73 | .dropdown-menu[data-bs-popper] { 74 | top: auto; 75 | bottom: 100%; 76 | margin-top: 0; 77 | margin-bottom: $dropdown-spacer; 78 | } 79 | 80 | .dropdown-toggle { 81 | @include caret(up); 82 | } 83 | } 84 | 85 | .dropend { 86 | .dropdown-menu[data-bs-popper] { 87 | top: 0; 88 | right: auto; 89 | left: 100%; 90 | margin-top: 0; 91 | margin-left: $dropdown-spacer; 92 | } 93 | 94 | .dropdown-toggle { 95 | @include caret(end); 96 | &::after { 97 | vertical-align: 0; 98 | } 99 | } 100 | } 101 | 102 | .dropstart { 103 | .dropdown-menu[data-bs-popper] { 104 | top: 0; 105 | right: 100%; 106 | left: auto; 107 | margin-top: 0; 108 | margin-right: $dropdown-spacer; 109 | } 110 | 111 | .dropdown-toggle { 112 | @include caret(start); 113 | &::before { 114 | vertical-align: 0; 115 | } 116 | } 117 | } 118 | 119 | 120 | // Dividers (basically an `
`) within the dropdown 121 | .dropdown-divider { 122 | height: 0; 123 | margin: $dropdown-divider-margin-y 0; 124 | overflow: hidden; 125 | border-top: 1px solid $dropdown-divider-bg; 126 | } 127 | 128 | // Links, buttons, and more within the dropdown menu 129 | // 130 | // `