Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 3 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,5 @@
# Responsive News Reader

Let's create a responsive news reader website. To get the latest news the app will display we are going to use [News API](https://newsapi.org/). You will need to register with the service to obtain an API key.

## Objectives

- [ ] Create a responsive layout that works well and looks good at mobile, tablet and desktop screen sizes. Please create the mobile version first, then tablet and then desktop.

- [ ] Fetch news articles from News API and display them including title, image, description, publication, date and link to article.

- [ ] Display images for tablet and desktop screens only

- [ ] Implement a feature of your choice

## Stretch goals

- [ ] Implement pagination which allows you to get the next 20 results and display them

- [ ] Add search functionality which allows the user to retrieve news about a particular topic

## Instructions

- Fork and clone this repo
- Commit your changes frequently with short and descriptive commit messages
- Create a pull request when complete
- We want to see great looking webpages
- Your code should have consistent indentation and sensible naming
- Use lots of concise functions with a clear purpose
- Add code comments where it is not immediately obvious what your code does

## Getting started

- Take a look at the API documentation to see what the response data will look like
- Start with pen and paper to draw what you want your new app to look like
- Create a basic HTML page with your layout
- Create a CSS file and a JS file and import them into the webpage.
- Use `fetch` load some news items from API and insert them into your web page.

## README.md

When finished, update this README.md file in your repo. This should explain what the project is, how to run it and how to use it. Someone who is not familiar with the project should be able to look at it and understand what it is and what to do with it. This is quite important as you want to put projects in your portfolio and the information provided here will help a reviewer understand what it is they are looking at.
I tired to do simple news reader where I fetch news from 'https://newsapi.org/v2/top-headlines'. I wanted to be looks very colorful so have many different bright colors on website so news not looks bad (even if they are).
I used mobile first approach and then create 2 versions: for tablets and for desktop users.
On beginning I use flexbox to arrange all boxes with news however, during this project I starting to learning 'CSS grid' so after that I rebuild code with 'CSS grid'.
129 changes: 129 additions & 0 deletions css/reset.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
/* Let's default this puppy out
-------------------------------------------------------------------------------*/

html, body, body div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, figure, footer, header, menu, nav, section, time, mark, audio, video, details, summary {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font-weight: normal;
vertical-align: baseline;
background: transparent;
}

main, article, aside, figure, footer, header, nav, section, details, summary {display: block;}

/* Handle box-sizing while better addressing child elements:
http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
html {
box-sizing: border-box;
}

*,
*:before,
*:after {
box-sizing: inherit;
}

/* consider resetting the default cursor: https://gist.github.com/murtaugh/5247154 */

/* Responsive images and other embedded objects */
/* if you don't have full control over `img` tags (if you have to overcome attributes), consider adding height: auto */
img,
object,
embed {max-width: 100%;}

/*
Note: keeping IMG here will cause problems if you're using foreground images as sprites.
In fact, it *will* cause problems with Google Maps' controls at small size.
If this is the case for you, try uncommenting the following:
#map img {
max-width: none;
}
*/

/* force a vertical scrollbar to prevent a jumpy page */
html {overflow-y: scroll;}

/* we use a lot of ULs that aren't bulleted.
you'll have to restore the bullets within content,
which is fine because they're probably customized anyway */
ul {list-style: none;}

blockquote, q {quotes: none;}

blockquote:before,
blockquote:after,
q:before,
q:after {content: ''; content: none;}

a {margin: 0; padding: 0; font-size: 100%; vertical-align: baseline; background: transparent;}

del {text-decoration: line-through;}

abbr[title], dfn[title] {border-bottom: 1px dotted #000; cursor: help;}

/* tables still need cellspacing="0" in the markup */
table {border-collapse: separate; border-spacing: 0;}
th {font-weight: bold; vertical-align: bottom;}
td {font-weight: normal; vertical-align: top;}

hr {display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0;}

input, select {vertical-align: middle;}

pre {
white-space: pre; /* CSS2 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
word-wrap: break-word; /* IE */
}

input[type="radio"] {vertical-align: text-bottom;}
input[type="checkbox"] {vertical-align: bottom;}
.ie7 input[type="checkbox"] {vertical-align: baseline;}
.ie6 input {vertical-align: text-bottom;}

select, input, textarea {font: 99% sans-serif;}

table {font-size: inherit; font: 100%;}

small {font-size: 85%;}

strong {font-weight: bold;}

td, td img {vertical-align: top;}

/* Make sure sup and sub don't mess with your line-heights http://gist.github.com/413930 */
sub, sup {font-size: 75%; line-height: 0; position: relative;}
sup {top: -0.5em;}
sub {bottom: -0.25em;}

/* standardize any monospaced elements */
pre, code, kbd, samp {font-family: monospace, sans-serif;}

/* hand cursor on clickable elements */
.clickable,
label,
input[type=button],
input[type=submit],
input[type=file],
button {cursor: pointer;}

/* Webkit browsers add a 2px margin outside the chrome of form elements */
button, input, select, textarea {margin: 0;}

/* make buttons play nice in IE */
button,
input[type=button] {width: auto; overflow: visible;}

/* scale images in IE7 more attractively */
.ie7 img {-ms-interpolation-mode: bicubic;}

/* prevent BG image flicker upon hover
(commented out as usage is rare, and the filter syntax messes with some pre-processors)
.ie6 html {filter: expression(document.execCommand("BackgroundImageCache", false, true));}
*/

/* let's clear some floats */
.clearfix:after { content: " "; display: block; clear: both; }
202 changes: 202 additions & 0 deletions css/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
@import url('https://fonts.googleapis.com/css?family=Caveat');

body {
font-family: 'Caveat', cursive;
}

.container {
margin: 0 auto;
animation: 4s infinite bgcolorchange;
}

@keyframes bgcolorchange {
0% {
/*background: linear-gradient(0deg, rgba(157,255,0,1) 0%, rgba(129,168,12,1) 50%, rgba(157,255,0,1) 100%); !* w3c *!*/
background-color:yellow;
}
50% {
/*background: linear-gradient(0deg, rgba(129,168,12,1) 0%, rgba(157,255,0,1) 50%, rgba(129,168,12,1) 100%); !* w3c *!*/
background-color: greenyellow;
}
100% {
/*background: linear-gradient(0deg, rgba(157,255,0,1) 0%, rgba(129,168,12,1) 50%, rgba(157,255,0,1) 100%); !* w3c *!*/
background-color: yellow;
}
}

.header {
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
font-size: 2em;
color: #0026F7;
}

.header p {
font-size: 1.5em;
color: red;
padding: 0.3em;
margin: 0.3em;
background-color: yellow;
border-radius: 100px;
}

.mainNavigation {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
font-size: 2rem;
grid-gap: 55px;
padding-left: 5px;
padding-right: 5px;
}

.mainNavigation li:first-child {
/*background-color: #00FF00;*/
}

.mainNavigation a {
text-decoration: none;
}

.mainNavigation li {
display: grid;
align-items: center;
justify-content: center;
margin-top: 20px;
}

.mainNavigation li:hover {
background: rgba(242, 199, 7, 0.9);
}

.main {
display: grid;
margin: 0 auto;
text-align: center;
font-size: 1.5em;
padding: 0 1em;
grid-gap: 1em;
}

.main__articleNews {
display: grid;
grid-template-areas: 'title' 'description' 'image' 'published' 'source';
grid-template-rows: min-content 1fr 0 min-content min-content;
background-color: lightyellow;
border-radius: 40px;
grid-gap: 5px;
padding: 1em;
/*margin: 1em;*/
;}

.main__articleNews__title {
grid-area: title;
font-size: 1.5em;
font-weight: bolder;
border: 5px solid lightskyblue;
flex-direction: column;
justify-content: center;
}

.main__articleNews__description {
grid-area: description;
border: 5px solid black;
font-size: 1.5em;
display: flex;
flex-direction: column;
justify-content: center;
}

.main__articleNews__description a {
text-underline-position: under;
padding-bottom: 0.2em;
}

.main__articleNews__content {
grid-area: content;
border: 5px solid firebrick;
}

.main__articleNews__image {
grid-area: image;
}

.main__articleNews__published {
grid-area: published;
border: 5px solid blueviolet;
}

.main__articleNews__source {
grid-area: source;
border: 5px solid lightslategray;
}

@media (min-width: 768px) {
.header p {
font-size: 2em;
}

.main__articleNews {
display: grid;
min-height: min-content;
grid-template-areas: 'title' 'description' 'image' 'published' 'source';
grid-template-rows: auto auto auto auto auto;
grid-template-columns: auto;
background-color: lightyellow;
}

.main__articleNews__title {
grid-area: title;
}

.main__articleNews__description {
grid-area: description;
}

.main__articleNews__image {
grid-area: image;
width: auto;
min-height: 430px;
border: 5px solid red;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}

.main__articleNews__published {
grid-area: published;
}

.main__articleNews__source {
grid-area: source;
}

}

@media (min-width: 1024px) {
body {
font-size: 1.2rem;
}

.header p {
font-size: 3em;
}

.main {
display: grid;
}
.main__articleNews {
display: grid;
min-height: min-content;
grid-template-areas: 'image title' 'image description' 'image published' 'image source';
grid-template-rows: auto 1fr auto auto;
grid-template-columns: 60% auto;
}

.main__articleNews__image {
background-size: cover;
}
}


Loading