Improving the UI state of the owl to start blogging

This commit is contained in:
Sergiotarxz 2023-10-28 22:03:40 +02:00
parent 2edb490833
commit 49b453e2fb
10 changed files with 1125 additions and 453 deletions

View File

@ -0,0 +1,12 @@
<category>
<title>Programming recipes</title>
<menu_text>Programación</menu_text>
<description>
<p>Find the answer to your programming problem.</p>
</description>
<extra-text>
<p>This is an english only category challenges we found difficult to solve will be explained.</p>
</extra-text>
<img src="/img/programming.webp"/>
<slug>programming</slug>
</category>

View File

@ -42,8 +42,12 @@ sub Retrieve ($self) {
or die "Missing slug at $category_file"; or die "Missing slug at $category_file";
defined( my $menu_text = $dom->at(':root > menu_text')->content ) defined( my $menu_text = $dom->at(':root > menu_text')->content )
or die "Missing menu_text at $category_file"; or die "Missing menu_text at $category_file";
defined( my $priority = $dom->at(':root > priority')->text ) my $priority = $dom->at(':root > priority');
or die "Missing priority at $category_file"; if (defined $priority) {
$priority = $priority->text;
} else {
$priority = 999;
}
my $attributes = $self->_GetAttributes( $dom, $category_file ); my $attributes = $self->_GetAttributes( $dom, $category_file );
my $parent_tag = $dom->at(':root > parent'); my $parent_tag = $dom->at(':root > parent');
my $extra_text_tag = $dom->at(':root > extra-text'); my $extra_text_tag = $dom->at(':root > extra-text');

View File

@ -1,3 +1,20 @@
div.title-image {
position: relative;
max-height: 80vh;
overflow: hidden; }
div.title-image img {
min-width: 100%;
height: 80%;
aspect-ratio: 1 / 1; }
div.title-image div.text-title {
color: coral;
font-size: 3.0vh;
position: absolute;
top: 50%;
left: 50%;
text-shadow: 2px 0 black, -2px 0 black, 0 2px black, 0 -2px black, 1px 1px black, -1px -1px black, 1px -1px black, -1px 1px black;
transform: translate(-50%, -50%); }
html { html {
height: 100%; } height: 100%; }
@ -8,33 +25,99 @@ body {
min-height: 100%; min-height: 100%;
width: 100%; width: 100%;
height: 100%; } height: 100%; }
body div#first-box.margin { body span.round-center {
margin-top: 60px; } background: #5C8CED;
body div.author-text { color: white;
font-size: 20px; line-height: 100%;
display: flex; aspect-ratio: 1 / 1;
justify-content: end; } display: inline-flex;
body div.padding-side { border-radius: 0.3em;
padding-left: 1%; height: 0.7em;
padding-right: 1%; } font-size: 0.7em;
body div.padding { padding: 0.3em;
padding: 1%; } text-align: center;
body div.title-image { justify-content: center;
position: relative; align-items: center;
max-height: 80vh; vertical-align: middle;
overflow: hidden; } margin-bottom: 0.15em; }
body div.title-image img { body div.search-overlay {
min-width: 100%; } overflow-y: scroll;
body div.title-image div.text-title { display: none;
color: coral; position: fixed;
font-size: 3.0vh; height: 100%;
position: absolute; width: 100%;
top: 50%; background: white;
left: 50%; z-index: 3;
text-shadow: 2px 0 black, -2px 0 black, 0 2px black, 0 -2px black, 1px 1px black, -1px -1px black, 1px -1px black, -1px 1px black; top: 0;
transform: translate(-50%, -50%); } flex-direction: column; }
body div.search-overlay.active {
display: flex; }
body div.search-overlay div.search-results {
margin: 7px; }
body div.search-overlay div.search-results img {
width: 75px; }
body div.search-overlay div.search-results div.search-result div.row-title-url-image {
display: flex;
flex-direction: row; }
body div.search-overlay div.search-results div.search-result div.row-title-url-image img {
margin: 10px; }
body div.search-overlay div.bounding-search-bar {
margin: 7px;
width: calc(100% - 20px);
border-radius: 10px;
height: 60px;
display: flex; }
body div.search-overlay div.bounding-search-bar div.search {
width: calc(100% - 60px);
height: 60px;
margin-left: 0px;
margin-right: 0px; }
body div.search-overlay div.bounding-search-bar a.up, body div.search-overlay div.bounding-search-bar a.down {
display: none; }
body div.search-overlay div.bounding-search-bar a.exit-search {
width: 60px;
background: whitesmoke;
height: 60px;
display: flex;
justify-content: center;
align-items: center; }
body div.search-overlay div.bounding-search-bar a.exit-search img {
width: 60%; }
body div.search {
background: whitesmoke;
margin-left: 10px;
margin-right: 10px;
display: flex; }
body div.search a.search-icon {
height: calc(100% - 28px);
align-self: center;
margin: 7px;
display: flex;
background: aliceblue;
align-items: center;
padding: 7px;
border-radius: 10px;
border: solid gray 1px;
aspect-ratio: 1 / 1;
width: auto; }
body div.search a.search-icon img {
height: 80%;
aspect-ratio: 1 / 1; }
body div.search div.fake-text-box {
width: calc(100% - 60px);
display: flex;
align-items: center; }
body div.search div.fake-text-box input[type="text"] {
font-size: 30px;
width: 100%;
height: 70%;
background: none;
border: none;
outline: none; }
body p, body h1, body h2, body h3, body h4, body a { body p, body h1, body h2, body h3, body h4, body a {
font-family: 'arial'; } font-family: 'arial'; }
body *.android {
display: none; }
body div.site-wrapper { body div.site-wrapper {
display: table; display: table;
width: 100%; width: 100%;
@ -46,17 +129,220 @@ body {
filter: blur(10px); filter: blur(10px);
background-size: cover; background-size: cover;
overflow: hidden; } overflow: hidden; }
body div.page-contents { body div.carousel {
position: absolute; position: fixed;
top: 80%;
height: calc(20% - 6px);
width: calc(100% - 6px);
border: solid 3px black; }
body div.carousel a {
font-size: 13px;
background: azure;
color: #5C8CED;
display: flex;
text-align: center;
justify-content: space-between;
align-items: center;
height: 100%;
text-decoration: none; }
body div.carousel a:hover, body div.carousel a:focus {
background: #5C8CED;
color: azure; }
body div.carousel div.promoted-tag, body div.carousel h3 {
margin: 0;
margin-right: 5px; }
body div.carousel img {
margin: 10px;
height: calc(100% - 20px);
border: solid 1px black;
background: white; }
body div.none {
display: none; }
body div.complete-container {
position: fixed; position: fixed;
overflow-y: scroll;
z-index: 2; z-index: 2;
background: azure;
color: #666362; color: #666362;
top: 0%; top: 0%;
left: 0%; left: 0%;
height: 100%; height: 100%;
width: 100%; } width: 100%; }
body div.page-contents.no-carousel {
height: calc(100% - 60px); }
body nav {
overflow: auto;
display: block;
font-size: 25px;
margin: 0px; }
body nav a.go-to-index img {
background: white;
padding: 5px;
border-radius: 50%; }
body nav a {
padding-left: 10px;
padding-right: 10px;
height: 100%;
text-decoration: none;
color: azure;
margin: 0;
background: #5C8CED; }
body nav a:hover, body nav a:focus {
background: azure;
color: #5C8CED; }
body nav a.selected {
background: #FEFEFA;
color: #5C8CED;
border-right: 1px solid #5C8CED; }
body nav.desktop {
display: none; }
body nav.desktop a {
vertical-align: middle; }
body nav.desktop a.search-icon {
width: 60px;
height: 60px;
display: flex;
align-items: center;
justify-content: center; }
body nav.desktop a.search-icon img {
background: aliceblue;
border-radius: 10px;
padding: 10%;
width: 60%;
height: 60%; }
body div.transparent-fullscreen-hide {
position: fixed;
background: black;
left: 0;
width: 100%;
opacity: 40%;
top: 60px;
height: calc(100% - 60px);
z-index: 250;
display: none; }
body div.transparent-fullscreen-hide.show {
display: block; }
body nav.mobile-foldable {
visibility: hidden;
position: fixed;
left: 100%;
width: 70%;
top: 60px;
height: calc(100% - 60px);
z-index: 500;
transition: left 0.5s ease-in, visibility 0.5s ease-in;
background: white; }
body nav.mobile-foldable > a:first-child {
margin-top: 30px; }
body nav.mobile-foldable a {
display: block;
font-size: 1.1em;
height: auto;
padding-left: auto;
padding-right: auto;
color: #5C8CED;
background: white;
margin-top: 10px;
padding: 10px;
margin-left: 10px;
border-radius: 20px;
width: calc(100% - 20px - 20px - 2px); }
body nav.mobile-foldable div.child-categories-mobile {
margin-left: 80px;
width: calc(100% - 90px - 20px); }
body nav.mobile-foldable div.child-categories-mobile a {
display: list-item;
font-size: 1em; }
body nav.mobile-foldable.show {
left: 30%;
visibility: visible; }
body nav.mobile-shortcuts > a {
display: flex;
align-items: center;
justify-content: center; }
body nav.mobile-shortcuts > a.active {
background: white;
color: #dcdcf5; }
body nav.mobile-shortcuts > a.active:focus {
background: azure; }
body a.menu-expand {
padding-bottom: 9px; }
body a.menu-expand .open-menu-icon-hover {
display: none; }
body a.menu-expand:hover .open-menu-icon-hover, body a.menu-expand:focus .open-menu-icon-hover, body a.menu-expand.active .open-menu-icon-hover {
display: block; }
body a.menu-expand:hover .open-menu-icon, body a.menu-expand:focus .open-menu-icon, body a.menu-expand.active .open-menu-icon {
display: none; }
body nav > a.menu-expand > img {
width: 30px;
height: 30px; }
body nav > a > img.index-image-menu {
vertical-align: middle;
width: 40px;
height: 40px; }
body nav > a > img.index-image-menu, body div.burguillos-logo-container > img {
transition-property: transform;
transition-duration: 2s;
transition-delay: 2s; }
body nav > a:hover > img.index-image-menu,
body div.burguillos-logo-container.active > img {
transform: rotate(-1.5707963268rad); }
body div.search-in-page {
display: none;
position: fixed;
top: 60px;
height: 60px;
width: 100%;
align-items: center;
background: #5C8CED;
z-index: 3; }
body div.search-in-page a.up, body div.search-in-page a.down {
display: flex;
align-items: center;
justify-content: center;
height: calc(100% - 28px);
align-self: center;
margin: 7px;
display: flex;
background: aliceblue;
align-items: center;
padding: 7px;
border-radius: 10px;
border: solid gray 1px;
aspect-ratio: 1/1; }
body div.search-in-page a.up img, body div.search-in-page a.down img {
height: 80%; }
body div.search-in-page span {
color: whitesmoke;
font-size: 25px; }
body div.search-in-page.active {
display: flex; }
body nav.mobile-shortcuts {
position: fixed;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
background: #5C8CED;
height: 60px;
top: 0%; }
body nav.mobile-shortcuts a {
height: 100%;
width: 16.6666666667%;
padding-left: 0;
padding-top: 0;
padding-right: 0;
padding-bottom: 0; }
body nav.mobile-shortcuts div.search {
width: calc(100% * 4 / 6 - 20px);
height: 80%;
border-radius: 10px; }
body div.page-contents {
height: calc(100% - 60px);
background: #FEFEFA;
position: fixed;
top: 60px;
width: 100%;
overflow-y: scroll;
word-wrap: break-word; }
body div.page-contents div.child-categories-mobile a { body div.page-contents div.child-categories-mobile a {
padding-left: 2.5rem; } padding-left: 2.5rem; }
body div.page-contents img { body div.page-contents img {
@ -71,6 +357,11 @@ body {
border-collapse: collapse; border-collapse: collapse;
width: 100%; width: 100%;
table-layout: fixed; } table-layout: fixed; }
body div.page-contents table tr:hover {
background: #5C8CED;
color: azure; }
body div.page-contents table tr:hover th, body div.page-contents table tr:hover td {
border: 3px solid azure; }
body div.page-contents table td, body div.page-contents table th { body div.page-contents table td, body div.page-contents table th {
font-size: 12px; } font-size: 12px; }
body div.page-contents th, body div.page-contents td { body div.page-contents th, body div.page-contents td {
@ -78,154 +369,115 @@ body {
border-collapse: collapse; border-collapse: collapse;
padding-right: 10px; padding-right: 10px;
margin: 0; } margin: 0; }
body div.page-contents div.description { body div.page-contents input {
background: azure;
word-wrap: break-word;
margin-bottom: 1%; }
body div.page-contents div.description input {
display: block; }
body div.page-contents div.description div.content {
padding: 1%; }
body div.page-contents div.description div.suscribirse-rss img {
max-height: 300px; }
body div.page-contents div.description div.articles {
display: flex;
flex-direction: row;
flex-wrap: wrap; }
body div.page-contents div.description div.articles div.image-container {
margin-left: 2.5%;
margin-top: 10px;
height: 95%;
width: 95%;
display: flex;
min-height: 130px;
justify-content: center;
align-items: center;
overflow: hidden;
border: solid 1px black; }
body div.page-contents div.description div.articles div.image-container img {
max-width: unset;
width: 100%;
border: solid 1px black; }
body div.page-contents div.description div.articles a {
min-height: 90%;
width: 100%;
display: block;
text-decoration: none;
text-overflow: ellipsis;
margin-bottom: 30px; }
body div.page-contents div.description div.articles a article {
word-wrap: break-word;
width: 90%;
height: 90%;
padding: 5%;
padding-top: 1%;
background: azure;
color: #5C8CED;
box-shadow: 8px 8px 1px 0px #8ddfd6;
border: 3px solid black; }
body div.page-contents div.description div.articles a article p, body div.page-contents div.description div.articles a article h4, body div.page-contents div.description div.articles a article h3, body div.page-contents div.description div.articles a article h2 {
margin: 0px; }
body div.page-contents div.description div.articles a article p {
font-size: 0.9rem; }
body div.page-contents div.description div.articles a article div.article-up-part {
height: 12em; }
body div.page-contents div.description div.articles a article div.article-down-part {
margin-top: 2em;
height: 100px;
display: flex;
align-items: end;
padding-bottom: 2em; }
body div.page-contents div.description div.articles a article:hover {
background: #5C8CED;
color: azure; }
body div.page-contents div.description div.articles a article p.date {
text-align: right; }
body div.page-contents div.description div.articles a article p.author {
text-align: right; }
body div.page-contents div.description a.suscribe-category-rss {
background: #5C8CED;
width: 40px;
height: 40px;
padding: 10px;
border-radius: 5px;
display: inline-block; }
body div.page-contents div.description a.suscribe-category-rss img {
width: 40px;
height: 40px; }
body div.page-contents nav > a.menu-expand > img {
width: 30px;
height: 30px; }
body div.page-contents nav > a > img.index-image-menu {
vertical-align: middle;
width: 50px;
height: 50px; }
body div.page-contents nav.desktop {
display: none;
background: #5C8CED; }
body div.page-contents nav.desktop a {
transition: ease-out 0.3s;
vertical-align: middle;
background: #5C8CED; }
body div.page-contents nav.desktop a img {
background: azure; }
body div.page-contents nav {
overflow: auto;
display: block;
font-size: 25px;
margin: 0px; }
body div.page-contents nav a.go-to-index img {
margin-top: 5%; }
body div.page-contents nav a {
padding-left: 10px;
padding-right: 10px;
height: 100%;
text-decoration: none;
color: azure;
margin: 0; }
body div.page-contents nav a:hover {
background: azure;
color: #5C8CED; }
body div.page-contents nav a.selected {
background: azure;
color: #5C8CED; }
body div.page-contents nav a.menu-expand .open-menu-icon-hover {
display: none; }
body div.page-contents nav a.menu-expand:hover .open-menu-icon-hover {
display: block; }
body div.page-contents nav a.menu-expand:hover .open-menu-icon {
display: none; }
body div.page-contents nav.mobile-shortcuts {
z-index: 1;
position: fixed;
display: flex;
width: 100%;
background: #5C8CED;
height: 60px; }
body div.page-contents nav.mobile-shortcuts a.go-to-index {
height: 100%;
background: azure; }
body div.page-contents nav.mobile-shortcuts a.go-to-index:hover {
background: 'ghostwhite'; }
body div.page-contents nav.mobile-shortcuts a {
width: 60px;
height: 60px; }
body div.page-contents nav.mobile-shortcuts a.menu-expand {
padding-top: calc((60px - 30px) / 2);
padding-bottom: calc((60px - 30px) / 2);
height: 30px; }
body div.page-contents nav.mobile-shortcuts div {
width: calc(100% - 120px); }
body div.page-contents nav.mobile-foldable {
display: none;
background: #5C8CED;
color: azure; }
body div.page-contents nav.mobile-foldable a {
display: flex;
height: 60px;
align-items: center; }
body div.page-contents nav.mobile-foldable.show {
display: block; } display: block; }
body div.page-contents div.suscribirse-rss img {
max-height: 300px; }
body div.page-contents div.articles {
display: flex;
flex-direction: row;
flex-wrap: wrap; }
body div.page-contents div.articles div.image-container {
margin-left: 2.5%;
margin-top: 10px;
height: 95%;
width: 95%;
display: flex;
min-height: 130px;
justify-content: center;
align-items: center; }
body div.page-contents div.articles div.image-container img {
background: white;
max-height: 100%;
max-width: 100%;
border: solid 1px black; }
body div.page-contents div.articles a {
min-height: 90%;
width: 100%;
display: block;
text-decoration: none;
text-overflow: ellipsis;
margin-bottom: 30px; }
body div.page-contents div.articles a:focus article, body div.page-contents div.articles a:hover article {
background: #5C8CED;
color: azure; }
body div.page-contents div.articles a article {
word-wrap: break-word;
width: 90%;
height: 90%;
padding: 5%;
padding-top: 1%;
background: azure;
color: #5C8CED;
box-shadow: 8px 8px 1px 0px #8ddfd6;
border: 3px solid black; }
body div.page-contents div.articles a article p, body div.page-contents div.articles a article h4, body div.page-contents div.articles a article h3, body div.page-contents div.articles a article h2 {
margin: 0px; }
body div.page-contents div.articles a article p {
font-size: 0.9rem; }
body div.page-contents div.articles a article div.article-up-part {
height: 12em; }
body div.page-contents div.articles a article div.article-down-part {
margin-top: 2em;
height: 9em;
display: flex;
align-items: end;
padding-bottom: 2em; }
body div.page-contents div.articles a article:hover {
background: #5C8CED;
color: azure; }
body div.page-contents div.articles a article p.date {
text-align: right; }
body div.page-contents div.articles a article p.author {
text-align: right; }
body div.page-contents a.suscribe-category-rss {
background: #5C8CED;
width: 40px;
height: 40px;
padding: 10px;
border-radius: 5px;
display: inline-block; }
body div.page-contents a.suscribe-category-rss img {
width: 40px;
height: 40px; }
body div.page-contents div.open-browser-container {
display: flex;
justify-content: start;
width: 100%;
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 0px;
background: azure;
color: #5C8CED; }
body div.page-contents div.open-browser-container a.open-in-browser {
text-decoration: none;
display: flex;
justify-content: space-between;
width: calc(100% - 20px);
align-items: center;
margin-left: 10px;
margin-right: 10px; }
body div.page-contents div.open-browser-container a.open-in-browser img {
display: block;
height: 2rem;
width: 2rem;
margin-right: 0px;
margin-left: 0px; }
body div.page-contents div.open-browser-container a.open-in-browser span {
display: block; }
body div.page-contents div.open-browser-container.android {
display: none; }
body div.page-contents div.easter-egg {
display: flex;
justify-content: center; }
body div.page-contents div.burguillos-logo-container.active {
border: solid 1px black;
border-radius: 50%;
filter: invert(1); }
body div.page-contents div.burguillos-logo-container {
padding: 40px;
width: 120px; }
body div.page-contents h1 { body div.page-contents h1 {
text-align: center; } text-align: center; }
body div.page-contents div.footer p, body div.page-contents div.footer h1, body div.page-contents div.footer h2, body div.page-contents div.footer h3, body div.page-contents div.footer h4, body div.page-contents div.footer a { body div.page-contents div.footer p, body div.page-contents div.footer h1, body div.page-contents div.footer h2, body div.page-contents div.footer h3, body div.page-contents div.footer h4, body div.page-contents div.footer a {
@ -241,36 +493,49 @@ body {
font-size: 20px; } } font-size: 20px; } }
@media (min-width: 694px) { @media (min-width: 694px) {
body div.page-contents div.description div.articles a { body div.carousel a {
font-size: 20px; }
body div.carousel h3 {
font-size: 25px; }
body div.page-contents div.articles a {
width: 45%; width: 45%;
margin-left: 5%; } margin-left: 5%; }
body div.page-contents div.description div.articles a:nth-child(2n+1) { body div.page-contents div.articles a:nth-child(2n+1) {
margin-left: 0%; } } margin-left: 0%; }
body div.page-contents img {
max-width: 694px; } }
@media (min-width: 1100px) { @media (min-width: 1100px) {
body div#first-box.margin { body nav.mobile-foldable, body nav.mobile-foldable.show {
margin-top: 0px; } display: none; }
body nav.mobile-shortcuts {
display: none; }
body div.search-in-page.active {
display: none; }
body div.page-contents { body div.page-contents {
top: 0%; top: 0%;
left: 0%; left: 5%;
height: 100%; height: 80%;
width: 100%; } width: 90%;
body div.page-contents nav.mobile-foldable, body div.page-contents nav.mobile-foldable.show { border: solid 1px black; }
display: none; } body div.page-contents div.description.open-browser-container {
margin-left: 0;
margin-right: 0; }
body div.page-contents div.description { body div.page-contents div.description {
margin-top: auto; } margin-left: 10%;
margin-right: 10%; }
body div.page-contents nav.desktop { body div.page-contents nav.desktop {
display: block; display: block;
height: auto; } height: auto;
height: 60px; }
body div.page-contents nav.desktop a { body div.page-contents nav.desktop a {
display: table-cell; } display: table-cell;
height: 60px; }
body div.page-contents nav.desktop a img.index-image-menu { body div.page-contents nav.desktop a img.index-image-menu {
margin-top: 10px; height: 40px;
margin-bottom: 10px; width: 40px; }
padding: 5px; body div.page-contents.no-carousel {
border-radius: 10px; } height: 100%; } }
body div.page-contents nav.mobile-shortcuts {
display: none; } }
@media (min-width: 1333px) { @media (min-width: 1333px) {
body div.page-contents div.description div.articles a { body div.page-contents div.description div.articles a {
@ -281,11 +546,13 @@ body {
body div.page-contents div.description div.articles a:nth-child(3n+1) { body div.page-contents div.description div.articles a:nth-child(3n+1) {
margin-left: 0%; } } margin-left: 0%; } }
@media (max-aspect-ratio: 3/5) { @media (max-width: 200px) {
body div.title-image div.text-title { body {
font-size: 1.9vh; } } font-size: 20px; } }
@media (min-aspect-ratio: 6/7) {
body div.title-image div.text-title {
font-size: 5vh; } }
@media (max-height: 400px) {
body div.carousel {
height: 120px;
top: calc(100% - 120px); }
body div.page-contents {
height: calc(100% - 60px - 120px); } }

View File

@ -8,48 +8,168 @@ $background-secondary: #635283;
$color-secondary: #8eea6d; $color-secondary: #8eea6d;
$accent-secondary: #fde68f; $accent-secondary: #fde68f;
$primary-secondary: #590e11; $primary-secondary: #590e11;
$background_sidebar: white; //#F5F5DC;
$color_sidebar: #dcdcf5;
div.title-image {
position: relative;
max-height: 80vh;
overflow: hidden;
img {
min-width: 100%;
height: 80%;
aspect-ratio: 1 / 1;
}
div.text-title {
color: coral;
font-size: 3.0vh;
position: absolute;
top: 50%;
left: 50%;
text-shadow: 2px 0 black, -2px 0 black, 0 2px black, 0 -2px black, 1px 1px black, -1px -1px black, 1px -1px black, -1px 1px black;
transform: translate(-50%, -50%);
}
}
html { html {
height: 100%; height: 100%;
} }
body { body {
div#first-box.margin { span.round-center {
margin-top: 60px; background: $background_div;
color: $background_sidebar;
line-height: 100%;
aspect-ratio: 1 / 1;
display: inline-flex;
border-radius: 0.3em;
height: 0.7em;
font-size: 0.7em;
padding: 0.3em;
text-align: center;
justify-content: center;
align-items: center;
vertical-align: middle;
margin-bottom: 0.15em;
} }
div.author-text {
font-size: 20px; div.search-overlay {
overflow-y: scroll;
display: none;
position: fixed;
height: 100%;
width: 100%;
background: white;
z-index: 3;
top: 0;
flex-direction: column;
&.active {
display: flex; display: flex;
justify-content: end; }
}
div.padding-side { div.search-results {
padding-left: 1%; margin: 7px;
padding-right: 1%;
}
div.padding {
padding: 1%;
}
div.title-image {
position: relative;
max-height: 80vh;
overflow: hidden;
img { img {
min-width: 100%; width: 75px;
} }
div.text-title {
color: coral; div.search-result {
font-size: 3.0vh; div.row-title-url-image {
position: absolute; display: flex;
top: 50%; flex-direction: row;
left: 50%;
text-shadow: 2px 0 black, -2px 0 black, 0 2px black, 0 -2px black, 1px 1px black, -1px -1px black, 1px -1px black, -1px 1px black; img {
transform: translate(-50%, -50%); margin: 10px;
}
}
} }
}
div.bounding-search-bar {
margin: 7px;
width: calc(100% - 20px);
border-radius: 10px;
height: 60px;
display: flex;
div.search {
width: calc(100% - 60px);
height: 60px;
margin-left: 0px;
margin-right: 0px;
}
a.up, a.down {
display: none;
}
a.exit-search {
width: 60px;
background: whitesmoke;
height: 60px;
display: flex;
justify-content: center;
align-items: center;
img {
width: 60%;
}
}
}
} }
div.search {
background: whitesmoke;
margin-left: 10px;
margin-right: 10px;
display: flex;
a.search-icon {
height: calc(100% - 28px);
align-self: center;
margin: 7px;
display: flex;
background: aliceblue;
align-items: center;
padding: 7px;
border-radius: 10px;
border: solid gray 1px;
aspect-ratio: 1 / 1;
width: auto;
img {
height: 80%;
aspect-ratio: 1 / 1;
}
}
div.fake-text-box {
width: calc(100% - 60px);
display: flex;
align-items: center;
input[type="text"] {
font-size: 30px;
width: 100%;
height: 70%;
background: none;
border: none;
outline: none;
}
}
}
p, h1, h2, h3, h4, a { p, h1, h2, h3, h4, a {
font-family: 'arial'; font-family: 'arial';
} }
*.android {
display: none;
}
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden; overflow: hidden;
@ -71,23 +191,314 @@ body {
overflow: hidden; overflow: hidden;
} }
div.page-contents { div.carousel {
position: absolute; position: fixed;
top: 80%;
height: calc(20% - 6px);
width: calc(100% - 6px);
border: solid 3px black;
a {
font-size: 13px;
background: $color_div;
color: $background_div;
display: flex;
text-align: center;
justify-content: space-between;
align-items: center;
height: 100%;
text-decoration: none;
&:hover, &:focus {
background: $background_div;
color: $color_div;
}
}
div.promoted-tag, h3 {
margin: 0;
margin-right: 5px;
}
img {
margin: 10px;
height: calc(100% - 20px);
border: solid 1px black;
background: white;
}
}
div.none {
display: none;
}
div.complete-container {
position: fixed; position: fixed;
overflow-y: scroll;
z-index: 2; z-index: 2;
background: $color_div;
color: $color-page; color: $color-page;
top: 0%; top: 0%;
left: 0%; left: 0%;
height: 100%; height: 100%;
width: 100%;
}
div.page-contents.no-carousel {
height: calc(100% - 60px);
}
nav {
overflow: auto;
display: block;
font-size: 25px;
margin: 0px;
a.go-to-index img {
background: white;
padding: 5px;
border-radius: 50%;
}
a {
padding-left: 10px;
padding-right: 10px;
height: 100%;
text-decoration: none;
color: $color_div;
margin: 0;
background: $background_div;
&:hover, &:focus {
background: $color_div;
color: $background_div;
}
&.selected {
background: $background-page;
color: $background_div;
border-right: 1px solid $background_div;
}
}
}
nav.desktop {
display: none;
a {
vertical-align: middle;
}
a.search-icon {
width: 60px;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
img {
background: aliceblue;
border-radius: 10px;
padding: 10%;
width: 60%;
height: 60%;
}
}
}
div.transparent-fullscreen-hide {
position: fixed;
background: black;
left: 0;
width: 100%;
opacity: 40%;
top: 60px;
height: calc(100% - 60px);
z-index: 250;
display: none;
&.show {
display: block;
}
}
nav.mobile-foldable {
visibility: hidden;
position: fixed;
left: 100%;
width: 70%;
top: 60px;
height: calc(100% - 60px);
z-index: 500;
transition: left 0.5s ease-in, visibility 0.5s ease-in;
background: $background_sidebar;
& > a:first-child {
margin-top: 30px;
}
a {
//background: $color_div;
//color: $background_div;
display: block;
font-size: 1.1em;
height: auto;
padding-left: auto;
padding-right: auto;
color: $background_div;
// border: 1px solid black;
background: $background_sidebar;
margin-top: 10px;
padding: 10px;
margin-left: 10px;
border-radius: 20px;
width: calc(100% - 20px - 20px - 2px);
}
div.child-categories-mobile {
margin-left: 80px;
width: calc(100% - 90px - 20px);
a {
display: list-item;
font-size: 1em;
}
}
}
nav.mobile-foldable.show {
left: 30%;
visibility: visible;
}
nav.mobile-shortcuts > a {
display: flex;
align-items: center;
justify-content: center;
&.active {
background: $background_sidebar;
color: $color_sidebar;
&:focus {
background: $color_div;
}
}
}
a.menu-expand {
padding-bottom: 9px;
.open-menu-icon-hover {
display: none;
}
&:hover, &:focus, &.active {
.open-menu-icon-hover {
display: block;
}
.open-menu-icon {
display: none;
}
}
}
nav > a.menu-expand > img {
width: 30px;
height: 30px;
}
nav > a > img.index-image-menu {
vertical-align: middle;
width: 40px;
height: 40px;
}
nav > a > img.index-image-menu, div.burguillos-logo-container > img {
transition-property: transform;
transition-duration: 2s;
transition-delay: 2s;
}
nav > a:hover > img.index-image-menu,
div.burguillos-logo-container.active > img {
transform: rotate(-1.5707963268rad);
}
div.search-in-page {
display: none;
position: fixed;
top: 60px;
height: 60px;
width: 100%;
align-items: center;
background: $background_div;
z-index: 3;
a.up, a.down {
display: flex;
align-items: center;
justify-content: center;
height: calc(100% - 28px);
align-self: center;
margin: 7px;
display: flex;
background: aliceblue;
align-items: center;
padding: 7px;
border-radius: 10px;
border: solid gray 1px;
aspect-ratio: 1/1;
img {
height: 80%;
}
}
span {
color: whitesmoke;
font-size: 25px;
}
&.active {
display: flex;
}
}
nav.mobile-shortcuts {
position: fixed;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
background: $background_div;
height: 60px;
top: 0%;
a {
height: 100%;
width: (100% / 6);
padding-left: 0;
padding-top: 0;
padding-right: 0;
padding-bottom: 0;
}
div.search {
width: calc(100% * 4 / 6 - 20px);
height: 80%;
border-radius: 10px;
}
}
div.page-contents {
height: calc(100% - 60px);
background: $background-page;
position: fixed;
top: 60px;
width: 100%;
overflow-y: scroll;
div.child-categories-mobile a { div.child-categories-mobile a {
padding-left: 2.5rem; padding-left: 2.5rem;
} }
width: 100%;
img { img {
max-width: 100%; max-width: 100%;
margin-left: auto; margin-left: auto;
@ -102,6 +513,15 @@ body {
border-collapse: collapse; border-collapse: collapse;
width: 100%; width: 100%;
tr:hover {
background: $background_div;
color: $color_div;
th, td {
border: 3px solid $color_div;
}
}
td, th { td, th {
font-size: 12px; font-size: 12px;
} }
@ -116,14 +536,9 @@ body {
margin: 0; margin: 0;
} }
div.description {
background: $color_div;
input { input {
display: block; display: block;
} }
div.content {
padding: 1%;
}
word-wrap: break-word; word-wrap: break-word;
@ -133,7 +548,6 @@ body {
} }
} }
margin-bottom: 1%;
div.articles { div.articles {
display: flex; display: flex;
@ -141,21 +555,21 @@ body {
flex-wrap: wrap; flex-wrap: wrap;
div.image-container { div.image-container {
margin-left: 2.5%; margin-left: 2.5%;
margin-top: 10px; margin-top: 10px;
height: 95%; height: 95%;
width: 95%; width: 95%;
display: flex; display: flex;
min-height: 130px; min-height: 130px;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
overflow: hidden;
img {
background: white;
max-height: 100%;
max-width: 100%;
border: solid 1px black; border: solid 1px black;
img { }
max-width: unset;
width: 100%;
border: solid 1px black;
}
} }
a { a {
@ -166,6 +580,14 @@ body {
text-overflow: ellipsis; text-overflow: ellipsis;
margin-bottom: 30px; margin-bottom: 30px;
&:focus, &:hover {
//outline: red solid 3px;
article {
background: $background_div;
color: $color_div;
}
}
article { article {
word-wrap: break-word; word-wrap: break-word;
width: 90%; width: 90%;
@ -174,20 +596,21 @@ body {
p, h4, h3, h2 { p, h4, h3, h2 {
margin: 0px; margin: 0px;
} }
p { p {
font-size: 0.9rem; font-size: 0.9rem;
} }
div.article-up-part { div.article-up-part {
height: 12em; height: 12em;
} }
div.article-down-part { div.article-down-part {
margin-top: 2em; margin-top: 2em;
height: 100px; height: 9em;
display: flex; display: flex;
align-items: end; align-items: end;
padding-bottom: 2em; padding-bottom: 2em;
} }
padding: 5%; padding: 5%;
@ -226,130 +649,63 @@ body {
height: 40px; height: 40px;
} }
} }
}
nav > a.menu-expand > img { div.open-browser-container {
width: 30px;
height: 30px;
}
nav > a > img.index-image-menu {
vertical-align: middle;
width: 50px;
height: 50px;
}
nav.desktop {
display: none;
background: $background_div;
a {
img {
background: $color_div;
}
transition: ease-out 0.3s;
vertical-align: middle;
background: $background_div;
}
}
nav {
overflow: auto;
display: block;
font-size: 25px;
margin: 0px;
a.go-to-index img {
margin-top: 5%;
}
a {
padding-left: 10px;
padding-right: 10px;
height: 100%;
text-decoration: none;
color: $color_div;
margin: 0;
&:hover {
background: $color_div;
color: $background_div;
}
&.selected {
background: $color_div;
color: $background_div;
}
}
a.menu-expand {
.open-menu-icon-hover {
display: none;
}
&:hover {
.open-menu-icon-hover {
display: block;
}
.open-menu-icon {
display: none;
}
}
}
}
nav.mobile-shortcuts {
z-index: 1;
position: fixed;
display: flex; display: flex;
justify-content: start;
width: 100%; width: 100%;
background: $background_div; margin-left: 0px;
height: 60px; margin-right: 0px;
a.go-to-index { padding-left: 0px;
height: 100%; padding-right: 0px;
background: $color_div; background: $color_div;
&:hover { color: $background_div;
background: 'ghostwhite';
a.open-in-browser {
text-decoration: none;
display: flex;
justify-content: space-between;
width: calc(100% - 20px);
align-items: center;
margin-left: 10px;
margin-right: 10px;
img {
display: block;
height: 2rem;
width: 2rem;
margin-right: 0px;
margin-left: 0px;
}
span {
display: block;
} }
} }
a {
width: 60px;
height: 60px;
}
a.menu-expand {
padding-top: calc((60px - 30px) / 2);
padding-bottom: calc((60px - 30px) / 2);
height: 30px;
}
div {
width: calc(100% - 120px);
}
} }
nav.mobile-foldable { div.open-browser-container.android {
display: none; display: none;
background: $background_div;
color: $color_div;
a {
//background: $color_div;
//color: $background_div;
display: flex;
height: 60px;
align-items: center;
}
} }
nav.mobile-foldable.show { div.easter-egg {
display: block; display: flex;
justify-content: center;
} }
div.burguillos-logo-container.active {
border: solid 1px black;
border-radius: 50%;
filter: invert(1);
}
div.burguillos-logo-container {
padding: 40px;
width: 120px;
}
div.burguillos-logo-container.active img {}
h1 { h1 {
text-align: center; text-align: center;
} }
@ -382,20 +738,33 @@ body {
} }
} }
} }
@media (min-width: 694px) { @media (min-width: 694px) {
body { body {
div.page-contents { div.carousel {
div.description { a {
font-size: 20px;
}
h3 {
font-size: 25px;
}
}
div.page-contents {
div.articles { div.articles {
a { a {
&:nth-child(2n+1) { &:nth-child(2n+1) {
margin-left: 0%; margin-left: 0%;
} }
width: 45%; width: 45%;
margin-left: 5%; margin-left: 5%;
} }
} }
img {
max-width: 694px;
} }
} }
} }
@ -403,43 +772,54 @@ body {
@media (min-width: 1100px) { @media (min-width: 1100px) {
body { body {
div#first-box.margin { nav.mobile-foldable, nav.mobile-foldable.show {
margin-top: 0px; display: none;
} }
nav.mobile-shortcuts {
display: none;
}
div.search-in-page.active {
display: none;
}
div.page-contents { div.page-contents {
nav.mobile-foldable, nav.mobile-foldable.show { div.description.open-browser-container {
display: none; margin-left: 0;
margin-right: 0;
} }
div.description { div.description {
margin-top: auto; margin-left: 10%;
margin-right: 10%;
} }
nav.desktop { nav.desktop {
display: block; display: block;
height: auto; height: auto;
height: 60px;
a { a {
display: table-cell; display: table-cell;
height: 60px;
img.index-image-menu { img.index-image-menu {
margin-top: 10px; height: 40px;
margin-bottom: 10px; width: 40px;
padding: 5px;
border-radius: 10px;
} }
} }
} }
nav.mobile-shortcuts {
display: none;
}
top: 0%; top: 0%;
left: 0%; left: 5%;
height: 80%;
width: 90%;
border: solid 1px black;
}
div.page-contents.no-carousel {
height: 100%; height: 100%;
width: 100%;
} }
} }
} }
@ -448,15 +828,16 @@ body {
body { body {
div.page-contents { div.page-contents {
div.description { div.description {
div.articles { div.articles {
a { a {
&:nth-child(2n+1) { &:nth-child(2n+1) {
margin-left: 3%; margin-left: 3%;
} }
&:nth-child(3n+1) { &:nth-child(3n+1) {
margin-left: 0%; margin-left: 0%;
} }
width: 30%; width: 30%;
margin-left: 3%; margin-left: 3%;
} }
@ -466,22 +847,21 @@ body {
} }
} }
@media (max-aspect-ratio: 3 / 5) { @media (max-width: 200px) {
body { body {
div.title-image { font-size: 20px;
div.text-title { }
font-size: 1.9vh;
}
}
}
} }
@media (min-aspect-ratio: 6 / 7) { @media (max-height: 400px) {
body { body {
div.title-image { div.carousel {
div.text-title { height: 120px;
font-size: 5vh; top: calc(100% - 120px);
}
}
} }
div.page-contents {
height: calc(100% - 60px - 120px);
}
}
} }

BIN
public/img/programming.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -1,4 +1,6 @@
<!DOCTYPE html> <!DOCTYPE xhtml>
<html lang="es">
<!--
% use Mojo::DOM; % use Mojo::DOM;
% my $categories = stash 'categories'; % my $categories = stash 'categories';
% my $current_category_slug = stash 'current_category_slug'; % my $current_category_slug = stash 'current_category_slug';
@ -11,10 +13,10 @@
% my $site_name = config 'site_name'; % my $site_name = config 'site_name';
% my $title = title; % my $title = title;
% my $title_meta = defined $title ? Mojo::DOM->new('<div>'.title.'</div>')->all_text : ''; % my $title_meta = defined $title ? Mojo::DOM->new('<div>'.title.'</div>')->all_text : '';
<html lang="es"> -->
<head> <head>
<script src="/js/bundle.js"></script>
% my $css_version = config 'css_version'; % my $css_version = config 'css_version';
<script src="/js/bundle.js?v=<%=$css_version%>"></script>
<link rel="stylesheet" href="/css/styles.css?v=<%=$css_version%>"/> <link rel="stylesheet" href="/css/styles.css?v=<%=$css_version%>"/>
<title><%= $title_meta %></title> <title><%= $title_meta %></title>
<meta name="description" content="<%=defined $description_og ? $description_og : 'Lee más sobre: ' . title %>" /> <meta name="description" content="<%=defined $description_og ? $description_og : 'Lee más sobre: ' . title %>" />
@ -32,21 +34,28 @@
% } % }
<meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:card" content="summary_large_image"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head> </head>
<body> % if (defined $ogimage) {
<div class="site-wrapper"> <!-- You must be wondering what the fuck is this always hidden image, we are tricking facebook into thinking this is the first image in the website
</div> because ogimages broke in their side.-->
<div class="page-contents"> <img style="display: none;" src="<%= $ogimage %>" alt="Portada de <%= title %>"/>
%= include 'page/_desktop_menu', categories => $categories, current_category_slug => $current_category_slug % }
<div class="site-wrapper">
</div>
<div class="complete-container">
%= include 'page/_mobile_menu', categories => $categories %= include 'page/_mobile_menu', categories => $categories
<%= content %></body> %= include 'page/_mobile_foldable', categories => $categories
<hr/> <div class="page-contents">
<div class="footer description padding"> %= include 'page/_desktop_menu', categories => $categories, current_category_slug => $current_category_slug
<p>©2022-2023 Owlcode.tech</p> <%= content %>
<p>Enterate de todas las novedades de <%=$site_name%>:</p> <hr/>
<a class="suscribe-category-rss" href="/all.rss"> <div class="footer description padding">
<img src="/img/rss.svg" alt="Icono de suscripción rss"/> <p>©2022-2023 Owlcode.tech</p>
</a> <p>Enterate de todas las novedades de <%=$site_name%>:</p>
</div> <a class="suscribe-category-rss" href="/all.rss">
</div> <img src="/img/rss.svg" alt="Icono de suscripción rss"/>
</a>
</div>
</div>
</div>
</html> </html>

View File

@ -1,11 +1,11 @@
% use Data::Dumper;
% my $categories = stash 'categories'; % my $categories = stash 'categories';
% my $current_category = stash 'current_category'; % my $current_category_slug = stash 'current_category_slug';
<nav class="desktop"><% <nav class="desktop"><%
my @sorted_categories = sort { my @sorted_categories = sort {
$categories->{$a}{priority} <=> $categories->{$b}{priority} $categories->{$a}{priority} <=> $categories->{$b}{priority}
} keys %$categories; } keys %$categories;
my $target_category_slug = $current_category_slug; my $target_category_slug = $current_category_slug;
my $current_category = $categories->{$current_category_slug};
if (defined $current_category) { if (defined $current_category) {
my $possible_parent = $current_category->{parent}; my $possible_parent = $current_category->{parent};
if (defined $possible_parent && defined $categories->{$possible_parent}) { if (defined $possible_parent && defined $categories->{$possible_parent}) {

View File

@ -0,0 +1,17 @@
<div class="transparent-fullscreen-hide">
</div>
<nav class="mobile-foldable" id="mobile-foldable"><%
my $first = 1;
for my $category_key (sort {
$categories->{$a}{priority} <=> $categories->{$b}{priority}
} keys %$categories) {
my $category = $categories->{$category_key};
if (defined $category->{parent} || $category->{slug} eq 'index') {
next;
}
%><a href="<%= '/'.$category->{slug} %>"><span class="round-center">v</span> <%==$category->{menu_text}%></a><div class="child-categories-mobile"><%
for my $child_category ($category->{children}->@*) {
%><a href="<%="/$child_category->{slug}"%>"><%==$child_category->{menu_text}%></a><%
}%></div><%
}
%></nav>

View File

@ -1,24 +1,9 @@
% my $categories = stash 'categories'; % my $categories = stash 'categories';
<nav class="mobile-shortcuts"> <nav class="mobile-shortcuts">
<a class="go-to-index" href="<%='/'.$categories->{index}{slug}%>"><%== $categories->{index}{menu_text} %></a> <a class="go-to-index" href="<%='/'.$categories->{index}{slug}%>"><%== $categories->{index}{menu_text} %></a>
<div></div> %= include 'page/_search_bar'
<a href="#mobile-foldable" class="menu-expand"> <a class="menu-expand" href="#">
<img class="open-menu-icon" src="/img/hamburguer-menu-azure.webp" alt="Expandir el menú."/> <img class="open-menu-icon" src="/img/hamburguer-menu-azure.webp" alt="Expandir el menú."/>
<img class="open-menu-icon-hover" src="/img/hamburguer-menu-owlblue.webp" alt="Expandir el menú."/> <img class="open-menu-icon-hover" src="/img/hamburguer-menu-owlblue.webp" alt="Expandir el menú."/>
</a> </a>
</nav> </nav>
<nav class="mobile-foldable" id="mobile-foldable"><%
my $first = 1;
for my $category_key (sort {
$categories->{$a}{priority} <=> $categories->{$b}{priority}
} keys %$categories) {
my $category = $categories->{$category_key};
if (defined $category->{parent}) {
next;
}
%><a href="<%= '/'.$category->{slug} %>"><%==$category->{menu_text}%></a><div class="child-categories-mobile"><%
for my $child_category ($category->{children}->@*) {
%><a href="<%="/$child_category->{slug}"%>">* <%==$child_category->{menu_text}%></a><%
}%></div><%
}
%></nav>

View File

@ -12,7 +12,6 @@
% $description_og = Mojo::DOM->new($description_og)->all_text; % $description_og = Mojo::DOM->new($description_og)->all_text;
% layout 'default', current_category => $current_category, description_og => $description_og, ogimage => "$base_url/@{[$current_category->{slug}]}-preview.png"; % layout 'default', current_category => $current_category, description_og => $description_og, ogimage => "$base_url/@{[$current_category->{slug}]}-preview.png";
% title $current_category->{title}; % title $current_category->{title};
<div id="first-box" class="description margin">
% if (defined $current_category->{image}) { % if (defined $current_category->{image}) {
<div class="title-image"> <div class="title-image">
<img alt="Portada de la categoría: <%= $current_category->{title} %>" src="<%=$current_category->{image}%>"/> <img alt="Portada de la categoría: <%= $current_category->{title} %>" src="<%=$current_category->{image}%>"/>
@ -53,4 +52,3 @@
<img src="/img/rss.svg" alt="Icono de suscripción rss"/> <img src="/img/rss.svg" alt="Icono de suscripción rss"/>
</a> </a>
</div> </div>
</div>