From 5423681c088d273d75b6e5a77039668ce7be0822 Mon Sep 17 00:00:00 2001 From: Loi Phan Date: Mon, 31 Jul 2023 17:33:28 +0700 Subject: [PATCH 1/3] Fix UI and refactor code --- README.md | 1 - practice/practice-02/.prettierrc | 8 + practice/practice-02/README.md | 68 +++++++ practice/practice-02/package.json | 2 +- .../images/{offer => common}/item-card.png | Bin .../assets/images/{offer => common}/star.png | Bin .../assets/images/{offer => food}/food-1.png | Bin .../{menu/food-7.png => food/food-10.png} | Bin .../{menu/food-8.png => food/food-11.png} | Bin .../assets/images/{offer => food}/food-2.png | Bin .../assets/images/{offer => food}/food-3.png | Bin .../assets/images/{offer => food}/food-4.png | Bin .../{menu/food-2.png => food/food-5.png} | Bin .../{menu/food-3.png => food/food-6.png} | Bin .../{menu/food-4.png => food/food-7.png} | Bin .../{menu/food-5.png => food/food-8.png} | Bin .../{menu/food-6.png => food/food-9.png} | Bin .../src/assets/images/logo-desktop.png | Bin 0 -> 4258 bytes .../src/assets/images/logo-mobile.png | Bin 0 -> 3287 bytes .../practice-02/src/assets/images/logo.svg | 23 --- .../src/assets/images/nav-button.svg | 7 - practice/practice-02/src/includes/mixins.pug | 30 +-- practice/practice-02/src/layouts/footer.pug | 4 +- practice/practice-02/src/layouts/header.pug | 27 +-- practice/practice-02/src/sections/menu.pug | 6 +- practice/practice-02/src/sections/offer.pug | 10 +- practice/practice-02/src/sections/welcome.pug | 130 ++++++------- .../src/styles/abstracts/_mixins.scss | 62 +++---- .../src/styles/abstracts/_variables.scss | 1 - .../practice-02/src/styles/bases/_base.scss | 18 +- .../practice-02/src/styles/bases/_reset.scss | 1 - .../src/styles/bases/_typography.scss | 26 +++ .../src/styles/components/_button.scss | 1 - .../src/styles/components/_card-item.scss | 171 +++++++++--------- .../src/styles/components/_logo.scss | 21 --- .../src/styles/components/_toggle-menu.scss | 55 ------ .../src/styles/layouts/_footer.scss | 22 ++- .../src/styles/layouts/_header.scss | 14 +- .../practice-02/src/styles/layouts/_menu.scss | 3 +- .../src/styles/layouts/_navbar.scss | 164 +++++++++++------ .../src/styles/layouts/_offer.scss | 5 +- .../src/styles/layouts/_platform.scss | 7 +- .../src/styles/layouts/_service.scss | 8 +- .../src/styles/layouts/_welcome.scss | 21 ++- practice/practice-02/src/styles/main.scss | 2 - 45 files changed, 479 insertions(+), 439 deletions(-) delete mode 100644 README.md create mode 100644 practice/practice-02/.prettierrc create mode 100644 practice/practice-02/README.md rename practice/practice-02/src/assets/images/{offer => common}/item-card.png (100%) rename practice/practice-02/src/assets/images/{offer => common}/star.png (100%) rename practice/practice-02/src/assets/images/{offer => food}/food-1.png (100%) rename practice/practice-02/src/assets/images/{menu/food-7.png => food/food-10.png} (100%) rename practice/practice-02/src/assets/images/{menu/food-8.png => food/food-11.png} (100%) rename practice/practice-02/src/assets/images/{offer => food}/food-2.png (100%) rename practice/practice-02/src/assets/images/{offer => food}/food-3.png (100%) rename practice/practice-02/src/assets/images/{offer => food}/food-4.png (100%) rename practice/practice-02/src/assets/images/{menu/food-2.png => food/food-5.png} (100%) rename practice/practice-02/src/assets/images/{menu/food-3.png => food/food-6.png} (100%) rename practice/practice-02/src/assets/images/{menu/food-4.png => food/food-7.png} (100%) rename practice/practice-02/src/assets/images/{menu/food-5.png => food/food-8.png} (100%) rename practice/practice-02/src/assets/images/{menu/food-6.png => food/food-9.png} (100%) create mode 100644 practice/practice-02/src/assets/images/logo-desktop.png create mode 100644 practice/practice-02/src/assets/images/logo-mobile.png delete mode 100644 practice/practice-02/src/assets/images/logo.svg delete mode 100644 practice/practice-02/src/assets/images/nav-button.svg delete mode 100644 practice/practice-02/src/styles/components/_logo.scss delete mode 100644 practice/practice-02/src/styles/components/_toggle-menu.scss diff --git a/README.md b/README.md deleted file mode 100644 index 6defcd2..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -Loi Phan Internship \ No newline at end of file diff --git a/practice/practice-02/.prettierrc b/practice/practice-02/.prettierrc new file mode 100644 index 0000000..22ca4b4 --- /dev/null +++ b/practice/practice-02/.prettierrc @@ -0,0 +1,8 @@ +{ + "bracketSameLine": false, + "bracketSpacing": true, + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "useTabs": false +} diff --git a/practice/practice-02/README.md b/practice/practice-02/README.md new file mode 100644 index 0000000..c4b782a --- /dev/null +++ b/practice/practice-02/README.md @@ -0,0 +1,68 @@ +# PROJECT + +- This is a basic web application with responsive written by HTML5, CSS3, Pug and SCSS. + +## Overview + +- Introduce: + - Build a website using HTML5, CSS3, Pug and SCSS. +- Design: [link]() +- Plan: [practice-two](https://docs.google.com/document/d/1h43ur7SoS9SYnvJJ75ajS7sq4lzrROyQvuVCrFlXoXk/edit?usp=sharing) +- Deploy: _Update later_ + +## Requirements + +- Apply knowledge to responsive website. +- Getting the code to work cross-browsers latest version (Chrome, Firefox, MS Edge, Opera, Safari) +- Use media queries for popular screen sizes. ( 428px, 768px, 1440px) +- Apply [Grid Layout](https://www.w3schools.com/css/css_grid.asp), Pugjs and SCSS on project. + +## Target + +- Build a responsive website. +- Know how to use Pugjs and SCSS on project. +- Understand the concept of [Grid Layout](https://www.w3schools.com/css/css_grid.asp). + +## Technical + +- [HTML5](https://www.tutorialspoint.com/html5/html5_overview.htm): CSS (Cascading Style Sheets) consist of a group of formatting rules that you use to control the layout and appearance of the content on a web page. +- [CSS3](https://www.htmlgoodies.com/html5/an-overview-of-css3/): Cascading Style Sheets (CSS) is a language used to illustrate a document’s look, style, and format in any markup language. In simple words, it is used to style and organize the layout of Web pages. CSS3 is the latest version of an earlier CSS version, CSS2. +- [Pugjs](https://pugjs.org/api/getting-started.html): Pug.js is a template engine for Node.js and browsers to render dynamic reusable content. At compile time, the template engine compiles our Pug template code to HTML. +- [SCSS](https://sass-lang.com/): Scss is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. + +## Information + +- Timeline: + - Estimate: 6 days + - Actual: 12 days. + - Calendar: + - Start: 2023/07/13 + - End: ... + +## Development Environment + +- Node: v18.17.0 +- Npm: v9.6.7 + +## Getting started + +- Step 1: Clone repository. + - With HTTPS: + - `$ git clone https://github.com/phuocduong-agilityio/loi-phan-internship.git`. +- Step 2: Move to folder which just cloned in your computer. + - `cd ./internship-loi-phan`. +- Step 3: Move it to branch html-css-practice-two. + - `$ git checkout html-css-practice-two`. +- Step 4: Move to folder practice-02. + - `$ cd ./practice/practice-02`. +- Step 5: + - Open terminal > `npm i`. +- Step 6: + - Run `npm start`. +- Step 7: + - Open http://localhost:1234/ in browser. + +## Author + +- Loi Phan. +- Email: [phanhuuloi15@gmail.com](phanhuuloi15@gmail.com). diff --git a/practice/practice-02/package.json b/practice/practice-02/package.json index 0eb6ef4..6669216 100644 --- a/practice/practice-02/package.json +++ b/practice/practice-02/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Practice 02", "scripts": { - "start": "del -rf dist && del -rf .parcel-cache && parcel ./src/*.pug --no-cache --no-source-maps", + "start": "rm -rf build && rm -rf .parcel-cache && parcel ./src/*.pug --no-cache --no-source-maps", "build": "rm -rf build && rm -rf .parcel-cache && parcel build ./src/*.pug --no-cache --no-source-maps --dist-dir dist", "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/practice/practice-02/src/assets/images/offer/item-card.png b/practice/practice-02/src/assets/images/common/item-card.png similarity index 100% rename from practice/practice-02/src/assets/images/offer/item-card.png rename to practice/practice-02/src/assets/images/common/item-card.png diff --git a/practice/practice-02/src/assets/images/offer/star.png b/practice/practice-02/src/assets/images/common/star.png similarity index 100% rename from practice/practice-02/src/assets/images/offer/star.png rename to practice/practice-02/src/assets/images/common/star.png diff --git a/practice/practice-02/src/assets/images/offer/food-1.png b/practice/practice-02/src/assets/images/food/food-1.png similarity index 100% rename from practice/practice-02/src/assets/images/offer/food-1.png rename to practice/practice-02/src/assets/images/food/food-1.png diff --git a/practice/practice-02/src/assets/images/menu/food-7.png b/practice/practice-02/src/assets/images/food/food-10.png similarity index 100% rename from practice/practice-02/src/assets/images/menu/food-7.png rename to practice/practice-02/src/assets/images/food/food-10.png diff --git a/practice/practice-02/src/assets/images/menu/food-8.png b/practice/practice-02/src/assets/images/food/food-11.png similarity index 100% rename from practice/practice-02/src/assets/images/menu/food-8.png rename to practice/practice-02/src/assets/images/food/food-11.png diff --git a/practice/practice-02/src/assets/images/offer/food-2.png b/practice/practice-02/src/assets/images/food/food-2.png similarity index 100% rename from practice/practice-02/src/assets/images/offer/food-2.png rename to practice/practice-02/src/assets/images/food/food-2.png diff --git a/practice/practice-02/src/assets/images/offer/food-3.png b/practice/practice-02/src/assets/images/food/food-3.png similarity index 100% rename from practice/practice-02/src/assets/images/offer/food-3.png rename to practice/practice-02/src/assets/images/food/food-3.png diff --git a/practice/practice-02/src/assets/images/offer/food-4.png b/practice/practice-02/src/assets/images/food/food-4.png similarity index 100% rename from practice/practice-02/src/assets/images/offer/food-4.png rename to practice/practice-02/src/assets/images/food/food-4.png diff --git a/practice/practice-02/src/assets/images/menu/food-2.png b/practice/practice-02/src/assets/images/food/food-5.png similarity index 100% rename from practice/practice-02/src/assets/images/menu/food-2.png rename to practice/practice-02/src/assets/images/food/food-5.png diff --git a/practice/practice-02/src/assets/images/menu/food-3.png b/practice/practice-02/src/assets/images/food/food-6.png similarity index 100% rename from practice/practice-02/src/assets/images/menu/food-3.png rename to practice/practice-02/src/assets/images/food/food-6.png diff --git a/practice/practice-02/src/assets/images/menu/food-4.png b/practice/practice-02/src/assets/images/food/food-7.png similarity index 100% rename from practice/practice-02/src/assets/images/menu/food-4.png rename to practice/practice-02/src/assets/images/food/food-7.png diff --git a/practice/practice-02/src/assets/images/menu/food-5.png b/practice/practice-02/src/assets/images/food/food-8.png similarity index 100% rename from practice/practice-02/src/assets/images/menu/food-5.png rename to practice/practice-02/src/assets/images/food/food-8.png diff --git a/practice/practice-02/src/assets/images/menu/food-6.png b/practice/practice-02/src/assets/images/food/food-9.png similarity index 100% rename from practice/practice-02/src/assets/images/menu/food-6.png rename to practice/practice-02/src/assets/images/food/food-9.png diff --git a/practice/practice-02/src/assets/images/logo-desktop.png b/practice/practice-02/src/assets/images/logo-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..196efdf2ddce9f6bdadd597ccac5fd9e4485e744 GIT binary patch literal 4258 zcmV;T5MA$yP)hABQRaW`2^}U&_i#cb4m||R)@q+E|RZ7V^Jv3tK@4gqJrK<{RO6gqE}0o zL`jQkg;dC`rcON-Ubjf>#BEKdu|BDtzTfH%H5~I>l0}L90V|TTGqW@EoA>6uH$#f3 z587VMX7t~FdzDTpJnDl6RD6$4F?yclov*Wj*5uR1PKHh?dY)v@)8ly6q_T8M(eorL z(uo9X(qr4JAD>ET?irFdzRCKv(lt?q*pwQ$r6BoAdI)S>g(*)>^4ri#F7cIi zGWtqWVR!X*L1`6gMUnP&xI^B`xnC6`I$`K3l1b^J)@rIMX)i6PS41nF+*2`S&r(eB z>Ufb!54V+?J1KCAxl3J+-Xd917OyF#ruP#mtB8u!F4q4^ zdg}?PU;HlH%$PfF^bE;tMCFq3C1IUaK|+jTqYG{m?WMPkM_&O%B{b?uRw z)GsEdnc(Jz(*?ieU3o8zfBbui9{e%#G)3lCtSPNMuIK#EGjzU;^}Z`f?g>d|Rjpgj zteGfJ7ra;%nYeKC)Bma+q97I1RUWNGwJS2W#V@!UQ?b|y12PnRAJavWS@GH z;V#8z^F}lt`ey+uA#kHw$`QX?X7E)9+O~)f57C7$m#$Hl;lxOC6`8PPHLO|B=dFS?2PhIVY0oNp znNsVtk&QU&LUg4hZ`{1;BLFcF>!BpB%&rMp@nyI-aBV!cYT0EeGV#&iu8MGPGo}5Q zgBjFmJi2ofSc)g83(-}Q{QSm;IOHD0TBqTI+OA9Dx9T|bw3px9*;s4fhd%t@&6^V} z-OKdy5N)&jL|uxmBAI>Dw0_|zj^=GZwXn0jG1qE<;nk(3aQ()Ic~;?5bo2nhBbS$! zBI;6fmAd}vqmMG)ZakZ)V-0nz!gGK6Vud=y`i+~*N97ME;5Kf1>Q*-s44mp<$kVa0 z^x2IqR@?f}56yFwE5Eh9HPcPu%X;XEh!?Bw*+Wy^iH7l}4x(XRHhO|&;K%oGW>X&F z1cy(Z0P$&3`HNpI&C>}(&yZ}eM>fu0H&@}X4Lltel=c=*lH|JRIg$;YvM+vCdqbq- z3=RVz4O@!4%8T%Nq3ng~FP}f8KKkgRk3Rb7qmMrN=%bGc4&*|;`R1E}Qfi2=jMmz> zZk05)0poaWdwV-9G2F6gMv}3{y*^sUl`B^=J3Bj3qj7ATWRP?I{P`&+5#Piw@@t7n zPV;M;UxPZuBDqX{OpXjsg6oeTKaQwJV8)K$4sqWxUOvBHc=YJe9qIrOG9J%Me5o^M z&P3mS`)$oH?zOem_|{u*p@GBPz&w+atMlMte#r{qz9jo{f!rj4>&P87!5GxR!NEjh z9Q0YJiwDxj`&24bs#TwPUafoYyz>qw^}XHQ-G!~KtqDk;Xu{<;-gqPW{`>Fes12a( z=H_ORpEt=QuW`L~k36+RGFRw(o;O=Am*;=@;fH*qyxc*A|5l`&AsivZy`NIjI^>s} zTG%@jq8{-`B**AF}X!1*2l8Q+&pVkwkgRn184b~;6{z{!*Jrl=PN>o z8c7Hb!Wxf3(rL`{bLY-o;`}cqRER<6_61f_NNvE7M&{tXOiosEvKUeMlWxBJnYL^5n?`U*HCHJmY6yg8fskylSPR8yg$9 zm>@{-xalxgoZ$x)xZ!u|mE(K`?)0(j+K2?2uca25oa=3rMf;P(3nGA%;?db_T`_Du`)DFjO(^ zjZM`glCiUYT6xC4#{}QU+S-g@K%}?=?pKaA!~^)o)CLCXRn85ak@ur$6s$@^93%yP zv28FQjmu2RM;Hg~|JceQ00T+;6Eh;Q^jiV?EyhhlE8JDZ_B|da5bVpnf+14e&q*=B znhHP-DZbXJ8(2?WSA0E?$uA4*>+6YcCn|YbI#g+_vj&EAOt6Tm(mX99)2xh4BKv13 zDw9YIEnCWF#1}@J;BsAWHNs~Zja8GS6Et<9_yIHgfY5yAHS4adCzS_F=X|Tov3%*v z_x&`7QOB&LcKu?XuexowY>ou>7>MNA>NSFK#gbcuchXMyR&0vEN^0A`w^5U1G>oG# zFg)^xV9VML_+!Mg@{UP&I!7GQsZx<*Y>bsQ52QfL5KgA%v4CW7#KdM-?Bn^ zffH3qigP;FlX18sT=uRQX*uyZ;g(f}@gV6;+I=&KsFStGE&hx(->u(Rw#G$46zUca zS|yU!=^BQZ04B54Uj@fvPDn%Cn8by0vKR2jwvKIy6zw-|<)5+YowlBtKaBW(!!?;z z%Obxl+G!w`UxsDZ$tUL=Gd3QWpha1yvnJgM-BqbYS?7(xQZjLEs4+}1JFgW*G6Of` z3|d4Tu3;EZt_vFGE?gCUekifwYqpw}evYA?oNv;pCTYJDR>ksGF;YeQ`BonyymzIz z-A#*nXn7Y()Dm2PA{q>7mN>QzG;C2M+@8e~TsF_?h_42swi5_x##oB@nnN1rDPV0D zX-?p{E}_|Qum??Cl!!Wn4ETtw_d}R`j+#!|X>G9Bh8|gc3uxb!%Gnzk*5t1u-(8F8 zkdTlp>rEmFycVwTPE(bIDT9tJ#!3uV$^>>k47^yNuK8cUt_^>j=6hKt1rr48e9@8i ztVjX!AS#sM?Y#`=#WPWURt5vcTM~`42My0}(Fet|N2N?nBT&*H*_YjWh5%Ueyev5o>*8C@|<_x&1fbcAX$EZQfs>ON*YBbgi z@O&fUL`@Ye2^_WZRXS!S17DRbOnc&B%`>MetaTqpisod^4jM?YPcM=d)(XMa>8HD2 z>^sFG)*@9uePQahcaty|`Y|h}@;lGMY235*Ze249V$fViNLwl_aeS;#F8Ggp7ZnAY} z>cGV0*FwER47M>R{mi-Ry?7Y*XGFOs?YMy)D9Adt#~KL4gylNtInT6Rj|7hpGbkLy zh^+Jloh7jr8xbr!D41CZIWkaF_C~n`ODbS;A8?tcoUh~_y>aqp#AR8=q_GV@9Feih ziQ#sis--9}1UK?4j zo-}@eJ9by3rV1bzotA-xp@BhPz)8y*ji^#B66MOfCnf}u{XtHAX5GQWDMULjp3m0^ z3>>>I-NM$Lv}pnnyas)}XS->2`dJf*8*rI<=XnLL(QrMKKuF$7LR&8LM1g;w5oukto_Ce6(5)A)7>_FqM(jn; zxi0KMp{S3JVUE<=X`)d=IwHvAPS9$|vrqB?AyL1;N(v?Je;~*SlMLG=FlK$)vxWQ` zS)m0Z*%4c*MSP#+1Hv4~wGBy@?ir5z=US~p0yr7*yP+Kd*NANu@ECBa$0oZ^@*w~r zUM6L^RiX{4IPJ=1AgO`eDvCXjNTFE)CD+L6SoC!x+z9Mby^1+D2#3+}`3PxO?q++qW(jL_@-G%B@)U)Al8*?GY>wPrGM^!B zoswD)&u`q+t>o*if35oxQSWP{hY6O@u)%MKMzp8Wi#_!ZIZqq56d`IBx#=K3mU}y% zy45H71Ova$i+_jU#fimTFzJXk;^&|h8+FLjC;1crKM9Fn&DSaKI?HiM%lDYeo=U#X z+9&xG;o|3?7ZoI0?@9IU=H{_{$)S%U#*ZI-Fy^NHA1tuv9);M7uK)l507*qoM6N<$ Ef=KH+KmY&$ literal 0 HcmV?d00001 diff --git a/practice/practice-02/src/assets/images/logo-mobile.png b/practice/practice-02/src/assets/images/logo-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..6018302bd2f41231aa37bba5e79818bc25b86b8e GIT binary patch literal 3287 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 VBgNCDbNB!N002ovPDHLkV1na`N?ZT{ literal 0 HcmV?d00001 diff --git a/practice/practice-02/src/assets/images/logo.svg b/practice/practice-02/src/assets/images/logo.svg deleted file mode 100644 index bc274f3..0000000 --- a/practice/practice-02/src/assets/images/logo.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/practice/practice-02/src/assets/images/nav-button.svg b/practice/practice-02/src/assets/images/nav-button.svg deleted file mode 100644 index 6aa0de7..0000000 --- a/practice/practice-02/src/assets/images/nav-button.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/practice/practice-02/src/includes/mixins.pug b/practice/practice-02/src/includes/mixins.pug index 1cfd9c6..78e8d6d 100644 --- a/practice/practice-02/src/includes/mixins.pug +++ b/practice/practice-02/src/includes/mixins.pug @@ -1,19 +1,19 @@ -- var avatar_img_path = "./assets/images/avatar/"; +- var common_img_path = "./assets/images/common/"; mixin foodItemCard(food) - .card-item - img.card-img(src=offer_img_path + "item-card.png", alt="Item card image") - img.food-image(src=food.imageUrl, alt=food.name + " image") - span.price= food.price + "$" - .content-card - .rate - .avatar-container + .card + img.card__img(src=common_img_path + "item-card.png", alt="Item card image") + img.card__food-image(src=food.imageUrl, alt=food.name + " image") + span.card__price= food.price + "$" + .card__content + .card__rate + .card__avatar-container if food.avatarImageList && food.avatarImageList.length > 0 each avatar, index in food.avatarImageList - img.avatar(src=avatar.avatarUrl, alt="Avatar user rate") - .star-container - img(src=offer_img_path + "star.png", alt="Star image") - span.rate-point= "(" + food.ratePoint + ")" - p.food-name= food.foodName - p.food-description= food.foodDescription - a.order-btn.btn(href="javascript:void(0)") Order now + img.card__avatar(src=avatar.avatarUrl, alt="Avatar user rate") + .card__star-container + img(src=common_img_path + "star.png", alt="Star image") + span.card__rate-point= "(" + food.ratePoint + ")" + p.card__food-name= food.foodName + p.card__food-description= food.foodDescription + a.card__order-btn.btn(href="javascript:void(0)") Order now diff --git a/practice/practice-02/src/layouts/footer.pug b/practice/practice-02/src/layouts/footer.pug index bea0d01..fbef4f5 100644 --- a/practice/practice-02/src/layouts/footer.pug +++ b/practice/practice-02/src/layouts/footer.pug @@ -28,12 +28,12 @@ footer.footer h3.footer__heading.primary-text About Us .footer__link each item in about_us_links - p.link-text= item + a.link-text(href="javascript:void(0)")= item .footer_company h3.footer__heading.primary-text Company .footer__link each item in company_links - p.link-text= item + a.link-text(href="javascript:void(0)")= item .footer__contact h3.footer__heading.primary-text Get in touch p.footer__description Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor diff --git a/practice/practice-02/src/layouts/header.pug b/practice/practice-02/src/layouts/header.pug index 1c68e70..b177da9 100644 --- a/practice/practice-02/src/layouts/header.pug +++ b/practice/practice-02/src/layouts/header.pug @@ -1,16 +1,21 @@ - var list = ["Today Special Offers", "Why FoodHut", "Our Menu", "Our Popular Food"]; header.header - .header-container - .logo-wrapper - a.logo-link(href="javascript:void(0)") - img.logo(src="./assets/images/logo.svg", alt="Food Hut logo") - .header-content + .header__container + .header__logo-wrapper + a.header__logo-link(href="javascript:void(0)") + picture + source( + media="(min-width: 840px)", + srcset="./assets/images/logo-desktop.png" + ) + img.logo(src="./assets/images/logo-mobile.png", alt="Food Hut logo") + .header__content nav.nav - input.toggle-menu(type="checkbox") - .icon-menu - ul.nav-list + input.nav__toggle-menu(type="checkbox") + .nav__icon-menu + ul.nav__list each val in list - li.nav-item - a.nav-link.link-text(href="javascript:void(0)")= val - a.btn.nav-download-btn(href="javascript:void(0)") Download App + li.nav__item-wrapper + a.nav__link.link-text(href="javascript:void(0)")= val + a.btn.nav__download-btn(href="javascript:void(0)") Download App diff --git a/practice/practice-02/src/sections/menu.pug b/practice/practice-02/src/sections/menu.pug index 1dc6463..0ef3ccc 100644 --- a/practice/practice-02/src/sections/menu.pug +++ b/practice/practice-02/src/sections/menu.pug @@ -1,6 +1,8 @@ -- var image_menu_path = "./assets/images/menu/"; +- var avatar_img_path = "./assets/images/avatar/"; +- var food_img_path = "./assets/images/food/"; + - var list_category = ["Ramen", "Breakfast", "Lunch", "Dinner", "Maxican", "Italian", "Desserts", "Drinks"]; -- var list_image_food = ["./assets/images/offer/food-1.png", image_menu_path + "food-2.png", image_menu_path + "food-3.png", image_menu_path + "food-4.png", image_menu_path + "food-5.png", image_menu_path + "food-6.png", image_menu_path + "food-7.png", image_menu_path + "food-8.png"]; +- var list_image_food = [food_img_path + "food-1.png", food_img_path + "food-2.png", food_img_path + "food-3.png", food_img_path + "food-4.png", food_img_path + "food-5.png", food_img_path + "food-6.png", food_img_path + "food-7.png", food_img_path + "food-8.png"]; - var default_food_data = { price: "10", ratePoint: "4.5", foodName: "Kebab", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; section.menu diff --git a/practice/practice-02/src/sections/offer.pug b/practice/practice-02/src/sections/offer.pug index 2e6d4f9..ade9599 100644 --- a/practice/practice-02/src/sections/offer.pug +++ b/practice/practice-02/src/sections/offer.pug @@ -1,9 +1,11 @@ - var offer_img_path = "./assets/images/offer/"; +- var avatar_img_path = "./assets/images/avatar/"; +- var food_img_path = "./assets/images/food/"; -- var food_1 = { imageUrl: offer_img_path + "food-1.png", price: "10", ratePoint: "4.5", foodName: "Kebab", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; -- var food_2 = { imageUrl: offer_img_path + "food-2.png", price: "15", ratePoint: "4.8", foodName: "Chicken Tikka", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-4.png" }, { avatarUrl: avatar_img_path + "avatar-5.png" }, { avatarUrl: avatar_img_path + "avatar-6.png" }] }; -- var food_3 = { imageUrl: offer_img_path + "food-3.png", price: "8", ratePoint: "4.2", foodName: "Desi Chowmein", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-7.png" }, { avatarUrl: avatar_img_path + "avatar-8.png" }, { avatarUrl: avatar_img_path + "avatar-9.png" }] }; -- var food_4 = { imageUrl: offer_img_path + "food-4.png", price: "28", ratePoint: "5.0", foodName: "Chicken Chargha", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; +- var food_1 = { imageUrl: food_img_path + "food-1.png", price: "10", ratePoint: "4.5", foodName: "Kebab", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; +- var food_2 = { imageUrl: food_img_path + "food-2.png", price: "15", ratePoint: "4.8", foodName: "Chicken Tikka", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-4.png" }, { avatarUrl: avatar_img_path + "avatar-5.png" }, { avatarUrl: avatar_img_path + "avatar-6.png" }] }; +- var food_3 = { imageUrl: food_img_path + "food-3.png", price: "8", ratePoint: "4.2", foodName: "Desi Chowmein", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-7.png" }, { avatarUrl: avatar_img_path + "avatar-8.png" }, { avatarUrl: avatar_img_path + "avatar-9.png" }] }; +- var food_4 = { imageUrl: food_img_path + "food-4.png", price: "28", ratePoint: "5.0", foodName: "Chicken Chargha", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; - var list_food = [food_1, food_2, food_3, food_4]; section.offer diff --git a/practice/practice-02/src/sections/welcome.pug b/practice/practice-02/src/sections/welcome.pug index 784ac6b..477a457 100644 --- a/practice/practice-02/src/sections/welcome.pug +++ b/practice/practice-02/src/sections/welcome.pug @@ -1,4 +1,4 @@ -- var welcome_img_path = "./assets/images/welcome/"; +- var welcome_img_path = './assets/images/welcome/'; - var list_food_image_mobile = [{img_mobile_path: welcome_img_path + "food-1-mobile.png", img_desktop_path: welcome_img_path + "food-1-desktop.png"}, {img_mobile_path: welcome_img_path + "food-2-mobile.png", img_desktop_path: welcome_img_path + "food-2-desktop.png"}, {img_mobile_path: welcome_img_path + "food-3-mobile.png", img_desktop_path: welcome_img_path + "food-3-desktop.png"}, {img_mobile_path: welcome_img_path + "food-4-mobile.png", img_desktop_path: welcome_img_path + "food-4-desktop.png"}]; section.welcome @@ -8,132 +8,132 @@ section.welcome .welcome__main-image picture source( - media="(min-width: 1200px)", - srcset=welcome_img_path + "welcome-image-desktop.png" + media='(min-width: 1200px)', + srcset=welcome_img_path + 'welcome-image-desktop.png' ) img.welcome__banner-img( - src=welcome_img_path + "welcome-image-mobile.png", - alt="Welcome banner image" + src=welcome_img_path + 'welcome-image-mobile.png', + alt='Welcome banner image' ) each item in list_food_image_mobile picture.welcome__food-img - source(media="(min-width: 1200px)", srcset=item.img_desktop_path) - img(src=item.img_mobile_path, alt="Food image") + source(media='(min-width: 1200px)', srcset=item.img_desktop_path) + img(src=item.img_mobile_path, alt='Food image') picture source( - media="(min-width: 1200px)", - srcset=welcome_img_path + "review-card-desktop.png" + media='(min-width: 1200px)', + srcset=welcome_img_path + 'review-card-desktop.png' ) img.welcome__review-card( - src=welcome_img_path + "review-card-mobile.png", - alt="Review card" + src=welcome_img_path + 'review-card-mobile.png', + alt='Review card' ) picture source( - media="(min-width: 1200px)", - srcset=welcome_img_path + "rate-card-desktop.png" + media='(min-width: 1200px)', + srcset=welcome_img_path + 'rate-card-desktop.png' ) img.welcome__rate-card( - src=welcome_img_path + "rate-card-mobile.png", - alt="Review card" + src=welcome_img_path + 'rate-card-mobile.png', + alt='Review card' + ) + picture + source( + media='(min-width: 1200px)', + srcset=welcome_img_path + 'arrow-desktop.png', + alt='Arrow image' + ) + img.welcome__arrow-img-up( + src=welcome_img_path + 'arrow-mobile.png', + alt='Arrow image' ) .welcome__background-banner picture source( - media="(min-width: 1200px)", - srcset=welcome_img_path + "lines-background-desktop.png" + media='(min-width: 1200px)', + srcset=welcome_img_path + 'lines-background-desktop.png' ) img.welcome__lines-background( - src=welcome_img_path + "lines-background-mobile.png", - alt="Lines background" + src=welcome_img_path + 'lines-background-mobile.png', + alt='Lines background' ) picture source( - media="(min-width: 1200px)", - srcset=welcome_img_path + "arrow-desktop.png", - alt="Arrow image" - ) - img.welcome__arrow-img-up( - src=welcome_img_path + "arrow-mobile.png", - alt="Arrow image" - ) - picture - source( - media="(min-width: 1200px)", - srcset=welcome_img_path + "mint-desktop.png" + media='(min-width: 1200px)', + srcset=welcome_img_path + 'mint-desktop.png' ) img.welcome__mint-img( - src=welcome_img_path + "mint-mobile.png", - alt="Mint image" + src=welcome_img_path + 'mint-mobile.png', + alt='Mint image' ) .welcome__content .welcome__arrow-down-img-wrapper img.welcome__arrow-img-down( - src=welcome_img_path + "arrow-desktop-2.png", - alt="Arrow image down" + src=welcome_img_path + 'arrow-desktop-2.png', + alt='Arrow image down' ) .welcome__orange-img-wrapper picture source( - media="(min-width: 840px)", - srcset=welcome_img_path + "orange-desktop.png" + media='(min-width: 840px)', + srcset=welcome_img_path + 'orange-desktop.png' ) img( - src=welcome_img_path + "orange.png", - alt="Orange background image" + src=welcome_img_path + 'orange.png', + alt='Orange background image' ) .welcome__text-box .welcome__icon-container img.welcome__love-icon( - src=welcome_img_path + "love-icon.png", - alt="Love icon" + src=welcome_img_path + 'love-icon.png', + alt='Love icon' ) .welcome__head-arrow-container - img(src=welcome_img_path + "head-arrow.png", alt="Head arrow image") + img(src=welcome_img_path + 'head-arrow.png', alt='Head arrow image') p.welcome__text-box-content People Trust us h1.welcome__heading We're - = " " + = ' ' span.primary-text serious - = " for " + = ' for ' span.primary-text food - = " & " + = ' & ' .delivery-text-box span.secondary-text delivery .welcome__underline-img-container - img(src=welcome_img_path + "underline.png", alt="Underline image") - = "." + img(src=welcome_img_path + 'underline.png', alt='Underline image') + = '.' p.welcome__description Best cooks and best delivery guys all at your service. Hot tasty food will reach you in 60 minutes. - form.welcome__search-form(action="#") + form.welcome__search-form(action='#') .welcome__search-icon-wrapper img.welcome__search-icon( - src=welcome_img_path + "search-icon.png", - alt="Search icon" + src=welcome_img_path + 'search-icon.png', + alt='Search icon' ) - input.welcome__text-input(type="text", placeholder="Search food") - button.welcome__submit-btn(type="submit") + input.welcome__text-input(type='text', placeholder='Search food') + button.welcome__submit-btn(type='submit') img.welcome__search-icon-btn( - src=welcome_img_path + "search-icon-btn.svg", - alt="Search button image" + src=welcome_img_path + 'search-icon-btn.svg', + alt='Search button image' ) .welcome__action-container - a.welcome__download-btn.btn(href="javascript:void(0)") Download App - a.welcome__watch-video-link.link-text(href="javascript:void(0)") + a.welcome__download-btn.btn(href='javascript:void(0)') Download App + a.welcome__watch-video-link.link-text(href='javascript:void(0)') .welcome__play-icon-wrapper svg.welcome__play-icon( - width="12", - height="12", - viewBox="0 0 12 13", - fill="none", - xmlns="http://www.w3.org/2000/svg" + width='12', + height='12', + viewBox='0 0 12 13', + fill='none', + xmlns='http://www.w3.org/2000/svg' ) path( - d="M12 6.5L0.749999 12.9952L0.75 0.00480889L12 6.5Z", - fill="currentColor" + d='M12 6.5L0.749999 12.9952L0.75 0.00480889L12 6.5Z', + fill='currentColor' ) span.welcome__text-download-btn Watch Video .welcome__slider-container img.welcome__slider-img( - src=welcome_img_path + "slider.png", - alt="Slider image" + src=welcome_img_path + 'slider.png', + alt='Slider image' ) diff --git a/practice/practice-02/src/styles/abstracts/_mixins.scss b/practice/practice-02/src/styles/abstracts/_mixins.scss index c7b1623..7439a8b 100644 --- a/practice/practice-02/src/styles/abstracts/_mixins.scss +++ b/practice/practice-02/src/styles/abstracts/_mixins.scss @@ -1,25 +1,11 @@ -%d-flex { - display: flex; -} +@mixin size($width: null, $height: null) { + @if $width != null { + width: $width; + } -%absolute { - position: absolute; -} - -@mixin base-icon-menu { - @include size(36px, 5px); - - background: #000000; - border-radius: 10px; - transition: 0.3s; -} - -@mixin icon-menu { - @include base-icon-menu; - @extend %absolute; - - content: ""; - right: 0; + @if $height != null { + height: $height; + } } @mixin flex-layout( @@ -50,16 +36,6 @@ } } -@mixin size($width: null, $height: null) { - @if $width != null { - width: $width; - } - - @if $height != null { - height: $height; - } -} - @mixin set-location($top: null, $left: null, $right: null, $bottom: null) { @if $top != null { top: $top; @@ -77,3 +53,27 @@ bottom: $bottom; } } + +@mixin base-icon-menu { + @include size(36px, 5px); + + background: #000000; + border-radius: 10px; + transition: 0.3s; +} + +%d-flex { + display: flex; +} + +%absolute { + position: absolute; +} + +.line-icon-menu { + @include base-icon-menu; + @extend %absolute; + + content: ""; + right: 0; +} diff --git a/practice/practice-02/src/styles/abstracts/_variables.scss b/practice/practice-02/src/styles/abstracts/_variables.scss index 72d5adb..d9147cd 100644 --- a/practice/practice-02/src/styles/abstracts/_variables.scss +++ b/practice/practice-02/src/styles/abstracts/_variables.scss @@ -23,4 +23,3 @@ $fs-xxx-lg: 58px; // Size $max-width: 1440px; -$min-width: 320px; diff --git a/practice/practice-02/src/styles/bases/_base.scss b/practice/practice-02/src/styles/bases/_base.scss index 2652adf..f9309c0 100644 --- a/practice/practice-02/src/styles/bases/_base.scss +++ b/practice/practice-02/src/styles/bases/_base.scss @@ -1,17 +1,3 @@ -.link-text { - font-size: $fs-md; - color: $black; - text-decoration: none; -} - -.primary-text { - color: $primary-color; -} - -.secondary-text { - color: $secondary-color; -} - -* { - line-height: normal; +body { + min-width: 428px; } diff --git a/practice/practice-02/src/styles/bases/_reset.scss b/practice/practice-02/src/styles/bases/_reset.scss index 509a8bc..863650f 100644 --- a/practice/practice-02/src/styles/bases/_reset.scss +++ b/practice/practice-02/src/styles/bases/_reset.scss @@ -87,7 +87,6 @@ video { margin: 0; padding: 0; border: 0; - font-size: 100%; vertical-align: baseline; } diff --git a/practice/practice-02/src/styles/bases/_typography.scss b/practice/practice-02/src/styles/bases/_typography.scss index dd250e8..72c0b7c 100644 --- a/practice/practice-02/src/styles/bases/_typography.scss +++ b/practice/practice-02/src/styles/bases/_typography.scss @@ -1,5 +1,9 @@ $font-path: "../assets/fonts"; +%fs-100 { + font-size: 100%; +} + @font-face { font-family: "Sofia Pro"; src: url("#{$font-path}/sofia-pro-regular.woff2") format("woff2"), @@ -43,4 +47,26 @@ $font-path: "../assets/fonts"; * { font-family: $primary-font; line-height: normal; + font-size: $fs-md; +} + +.link-text { + color: $black; + text-decoration: none; +} + +.link-text:hover { + color: $secondary-color; +} + +.primary-text { + @extend %fs-100; + + color: $primary-color; +} + +.secondary-text { + @extend %fs-100; + + color: $secondary-color; } diff --git a/practice/practice-02/src/styles/components/_button.scss b/practice/practice-02/src/styles/components/_button.scss index c15fc81..f89f831 100644 --- a/practice/practice-02/src/styles/components/_button.scss +++ b/practice/practice-02/src/styles/components/_button.scss @@ -3,7 +3,6 @@ padding: 11px 20px; background-color: $primary-color; border-radius: 100px; - font-size: $fs-md; color: $white; white-space: nowrap; transition: 0.2s; diff --git a/practice/practice-02/src/styles/components/_card-item.scss b/practice/practice-02/src/styles/components/_card-item.scss index d4e5f80..b8a64b6 100644 --- a/practice/practice-02/src/styles/components/_card-item.scss +++ b/practice/practice-02/src/styles/components/_card-item.scss @@ -2,105 +2,100 @@ @include flex-layout($align: center, $direction: column); } -.card-item { +.card { @extend %d-flex, %align-center-col; @include size(auto, 516px); position: relative; -} -.food-image { - @extend %absolute; - @include set-location($top: 29px); - - margin: auto; -} - -.price { - @extend %absolute; - @include set-location($top: 176px, $right: 70px); - @include size(52px, 52px); - - color: $white; - border: 4px solid $white; - border-radius: 50px; - background-color: $secondary-color; - font-size: $fs-md; - text-align: center; - line-height: 50px; -} - -.content-card { - @extend %d-flex, %align-center-col, %absolute; - @include set-location($bottom: 72px); - @include size(100%, auto); -} - -.rate { - @extend %d-flex; - @include flex-layout($align: center, $gap: 10px); -} - -.rate-point { - font-size: $fs-md; -} - -.star-container { - @include size(24px, 22px); -} - -.avatar-container { - @include size(74px, 38px); - - position: relative; -} - -.avatar { - &:first-child { + &__food-image { @extend %absolute; - @include set-location($left: 38px); + @include set-location($top: 29px); - z-index: 2; + margin: auto; } - &:nth-child(2) { + &__price { @extend %absolute; - @include set-location($left: 19px); + @include set-location($top: 176px, $right: 70px); + @include size(52px, 52px); - z-index: 1; - } - - &:last-child { - @extend %absolute; - @include set-location($left: 0); - } -} - -.food-name { - margin-top: 30px; - color: $primary-color; - font-size: $fs-lg; - font-weight: 600; -} - -.food-description { - @include size(100%, auto); - - max-width: 243px; - margin-top: 13px; - text-align: center; - text-transform: capitalize; - color: $black; -} - -.order-btn { - @extend %absolute; - @include set-location($bottom: 0px); - - padding: 10px 20px; - text-transform: capitalize; - - &:hover { + color: $white; + border: 4px solid $white; + border-radius: 50px; background-color: $secondary-color; + text-align: center; + line-height: 50px; + } + + &__content { + @extend %d-flex, %align-center-col, %absolute; + @include set-location($bottom: 72px); + @include size(100%, auto); + } + + &__rate { + @extend %d-flex; + @include flex-layout($align: center, $gap: 10px); + } + + &__star-container { + @include size(24px, 22px); + } + + &__avatar-container { + @include size(74px, 38px); + + position: relative; + } + + &__avatar { + &:first-child { + @extend %absolute; + @include set-location($left: 38px); + + z-index: 2; + } + + &:nth-child(2) { + @extend %absolute; + @include set-location($left: 19px); + + z-index: 1; + } + + &:last-child { + @extend %absolute; + @include set-location($left: 0); + } + } + + &__food-name { + margin-top: 30px; + color: $primary-color; + font-size: $fs-lg; + font-weight: 600; + } + + &__food-description { + @include size(100%, auto); + + max-width: 243px; + margin-top: 13px; + text-align: center; + text-transform: capitalize; + color: $black; + } + + &__order-btn { + @extend %absolute; + @include set-location($bottom: 0); + + padding: 10px 20px; + text-transform: capitalize; + + &:hover { + background-color: $secondary-color; + } } } diff --git a/practice/practice-02/src/styles/components/_logo.scss b/practice/practice-02/src/styles/components/_logo.scss deleted file mode 100644 index aeb0333..0000000 --- a/practice/practice-02/src/styles/components/_logo.scss +++ /dev/null @@ -1,21 +0,0 @@ -.logo { - @include size(100%, 100%); -} - -.logo-wrapper { - @include size(97px, 62px); - - flex-shrink: 0; -} - -.logo-link { - @include size(100%, 100%); - - display: inline-block; -} - -@media screen and (min-width: 840px) { - .logo-wrapper { - @include size(121px, 78px); - } -} diff --git a/practice/practice-02/src/styles/components/_toggle-menu.scss b/practice/practice-02/src/styles/components/_toggle-menu.scss deleted file mode 100644 index 953a85a..0000000 --- a/practice/practice-02/src/styles/components/_toggle-menu.scss +++ /dev/null @@ -1,55 +0,0 @@ -.icon-menu { - @include base-icon-menu; - - position: relative; - cursor: pointer; - top: -1px; - - &:before { - @include icon-menu; - - top: -11px; - } - - &:after { - @include icon-menu; - - top: 11px; - } -} - -.toggle-menu { - @extend %absolute; - @include size(36px, 27px); - - top: 46px; - right: 21px; - cursor: pointer; - z-index: 1; - opacity: 0; -} - -.toggle-menu:checked ~ .icon-menu { - background: transparent; -} - -.toggle-menu:checked ~ .icon-menu:before { - top: 0; - transform: rotate(-45deg); -} - -.toggle-menu:checked ~ .icon-menu:after { - top: 0; - transform: rotate(45deg); -} - -.toggle-menu:checked ~ .nav-list { - display: block; -} - -@media screen and (min-width: 840px) { - .icon-menu, - .toggle-menu { - display: none; - } -} diff --git a/practice/practice-02/src/styles/layouts/_footer.scss b/practice/practice-02/src/styles/layouts/_footer.scss index 920fe34..410bb01 100644 --- a/practice/practice-02/src/styles/layouts/_footer.scss +++ b/practice/practice-02/src/styles/layouts/_footer.scss @@ -17,8 +17,7 @@ } &__introduction .footer__description { - margin-top: 8 px; - font-size: $fs-md; + margin-top: 8px; max-width: 325px; } @@ -60,14 +59,13 @@ } &__contact { - margin-top: 30px; + padding-top: 30px; } &__contact .footer__description { max-width: 379px; color: $black; margin-top: 37px; - font-size: $fs-md; } &__form { @@ -84,6 +82,7 @@ padding-left: 25px; border: none; background-color: #e8e8e8; + font-size: $fs-xx-sm; } &__submit-btn { @@ -93,16 +92,22 @@ color: $white; background-color: $primary-color; border: none; + cursor: pointer; + font-size: $fs-xx-sm; + + &:hover { + background-color: $secondary-color; + } } &__copyright { @extend %mr-ml-auto; - @include size(fit-content, auto); font-size: $fs-x-sm; font-family: $secondary-font; margin-top: 80px; padding-bottom: 29px; + text-align: center; } } @@ -136,7 +141,7 @@ &__container { grid-template-columns: auto auto auto; padding-left: 135px; - column-gap: 10px; + column-gap: 40px; } &__introduction { @@ -145,6 +150,9 @@ } &__information { + @include flex-layout($justify: space-between, $gap: 30px); + + max-width: 304px; padding-top: 155px; } @@ -154,7 +162,7 @@ } &__contact { - padding-top: 125px; + padding-top: 155px; } } } diff --git a/practice/practice-02/src/styles/layouts/_header.scss b/practice/practice-02/src/styles/layouts/_header.scss index 2af581f..81b5083 100644 --- a/practice/practice-02/src/styles/layouts/_header.scss +++ b/practice/practice-02/src/styles/layouts/_header.scss @@ -1,34 +1,34 @@ .header { @extend %absolute; @include set-location($top: 0, $right: 0, $left: 0); + @include size(428px, auto); - max-width: 428px; margin: auto; } -.header-container { +.header__container { @extend %d-flex; @include flex-layout($align: center); justify-content: space-between; position: relative; - max-width: 428px; - min-width: $min-width; padding: 24px; margin: auto; } -.header-content { +.header__content { @extend %d-flex; @include flex-layout($justify: space-between); } @media screen and (min-width: 840px) { .header { + @include size(auto, auto); + max-width: $max-width; } - .header-container { + .header__container { @include flex-layout($gap: 10px); padding-top: 32px; @@ -37,7 +37,7 @@ max-width: 1309px; } - .header-content { + .header__content { @include flex-layout($gap: 10px); @include size(100%, auto); diff --git a/practice/practice-02/src/styles/layouts/_menu.scss b/practice/practice-02/src/styles/layouts/_menu.scss index 0c9f8fb..d6c389c 100644 --- a/practice/practice-02/src/styles/layouts/_menu.scss +++ b/practice/practice-02/src/styles/layouts/_menu.scss @@ -3,7 +3,6 @@ } %style-category-item { - font-size: $fs-md; padding: 8px 18px; border-radius: 50px; } @@ -40,7 +39,7 @@ } } - &__category-item:focus { + &__category-item:first-child { @extend %style-category-item; color: $white; diff --git a/practice/practice-02/src/styles/layouts/_navbar.scss b/practice/practice-02/src/styles/layouts/_navbar.scss index ca652ba..1dcdc52 100644 --- a/practice/practice-02/src/styles/layouts/_navbar.scss +++ b/practice/practice-02/src/styles/layouts/_navbar.scss @@ -1,40 +1,87 @@ -.nav-list { - @extend %absolute; - @include size(max-content, auto); +.nav { + &__icon-menu { + @include base-icon-menu; - display: none; - list-style: none; - transition: 0.1s; - border: 2px solid $primary-color; - top: 100px; - right: 25px; - background-color: $white; - z-index: 2; - border-radius: 20px; -} + position: relative; + cursor: pointer; + top: -1px; -.nav-download-btn { - display: none; + &:before { + @extend .line-icon-menu; - z-index: 1; -} + top: -11px; + } -.nav-item { - font-size: $fs-xx-sm; - padding: 14px; - border-bottom: 1px solid $black; + &:after { + @extend .line-icon-menu; - &:last-child { - border-bottom: unset; + top: 11px; + } } - &:hover .nav-link { - color: $secondary-color; - } -} + &__toggle-menu { + @extend %absolute; + @include size(36px, 27px); -.nav-link { - color: $black; + top: 37px; + right: 21px; + cursor: pointer; + z-index: 1; + opacity: 0; + } + + &__toggle-menu:checked ~ &__icon-menu { + background: transparent; + } + + &__toggle-menu:checked ~ &__icon-menu:before { + top: 0; + transform: rotate(-45deg); + } + + &__toggle-menu:checked ~ &__icon-menu:after { + top: 0; + transform: rotate(45deg); + } + + &__toggle-menu:checked ~ &__list { + display: block; + } + + &__list { + @extend %absolute; + @include size(max-content, auto); + + display: none; + list-style: none; + transition: 0.1s; + border: 2px solid $primary-color; + top: 100px; + right: 25px; + background-color: $white; + z-index: 2; + border-radius: 20px; + } + + &__download-btn { + display: none; + + z-index: 1; + } + + &__item-wrapper { + font-size: $fs-xx-sm; + padding: 14px; + border-bottom: 1px solid $black; + + &:last-child { + border-bottom: unset; + } + } + + &__link { + color: $black; + } } @media screen and (min-width: 840px) { @@ -42,35 +89,40 @@ @include size(100%, auto); margin: auto; - } - .nav-download-btn { - display: block; + &__icon-menu, + &__toggle-menu { + display: none; + } - &:hover { - background-color: $secondary-color; + &__download-btn { + display: block; + + &:hover { + background-color: $secondary-color; + } + } + + &__list { + @include size(auto, auto); + @include flex-layout( + $justify: space-between, + $direction: row, + $gap: 10px + ); + + display: flex; + position: unset; + border: none; + max-width: 660px; + margin: unset; + background-color: transparent; + } + + &__item-wrapper { + border-bottom: none; + padding: 0; + text-align: center; } } - - .nav-list { - @include size(auto, auto); - @include flex-layout($justify: space-between, $direction: row, $gap: 10px); - - display: flex; - position: unset; - border: none; - max-width: 660px; - margin: unset; - background-color: transparent; - } - - .nav-item { - border-bottom: none; - padding: 0; - text-align: center; - } - - // .nav-link:hover { - // color: $secondary-color; - // } } diff --git a/practice/practice-02/src/styles/layouts/_offer.scss b/practice/practice-02/src/styles/layouts/_offer.scss index d7c65ff..1e4e489 100644 --- a/practice/practice-02/src/styles/layouts/_offer.scss +++ b/practice/practice-02/src/styles/layouts/_offer.scss @@ -15,7 +15,7 @@ &__dot-background { @extend %absolute; - @include set-location($top: 168px, $left: 0px); + @include set-location($top: 168px, $left: 0); display: none; } @@ -27,7 +27,6 @@ } &__description { - font-size: $fs-md; font-weight: 400; text-transform: capitalize; text-align: center; @@ -60,7 +59,7 @@ } } -@media screen and (min-width: 840px) { +@media screen and (min-width: 600px) { .offer { max-width: $max-width; diff --git a/practice/practice-02/src/styles/layouts/_platform.scss b/practice/practice-02/src/styles/layouts/_platform.scss index 141bb2b..3797922 100644 --- a/practice/practice-02/src/styles/layouts/_platform.scss +++ b/practice/practice-02/src/styles/layouts/_platform.scss @@ -23,7 +23,7 @@ &__main-image { @extend %absolute; - @include set-location($top: 0px, $left: 60px); + @include set-location($top: 0, $left: 60px); } &__image-food:first-child { @@ -66,7 +66,6 @@ } &__description { - font-size: $fs-md; color: $black; margin-top: 31px; max-width: 366px; @@ -96,13 +95,13 @@ } &__background-img { - @include set-location($top: 0px, $right: 0px); + @include set-location($top: 0, $right: 0); position: absolute; } &__main-image { - @include set-location($top: 0px, $right: 58px, $left: unset); + @include set-location($top: 0, $right: 58px, $left: unset); } &__image-food:first-child { diff --git a/practice/practice-02/src/styles/layouts/_service.scss b/practice/practice-02/src/styles/layouts/_service.scss index 2390a81..0f45a34 100644 --- a/practice/practice-02/src/styles/layouts/_service.scss +++ b/practice/practice-02/src/styles/layouts/_service.scss @@ -52,7 +52,6 @@ &__heading { margin-top: 30px; - margin-inline: auto; font-size: $fs-xx-lg; line-height: 129.9%; font-weight: 700; @@ -63,7 +62,6 @@ margin-top: 29px; margin-inline: auto; max-width: 381px; - font-size: $fs-md; } &__category { @@ -88,14 +86,12 @@ } &__name-category { - font-size: $fs-md; text-transform: capitalize; } &__btn { - display: block; + display: inline-block; margin-top: 43px; - max-width: 74px; text-transform: capitalize; padding: 10px 20px; @@ -188,7 +184,7 @@ } &__background-img { - @include set-location($top: 0px, $left: 0); + @include set-location($top: 0, $left: 0); @extend %absolute_1200; } diff --git a/practice/practice-02/src/styles/layouts/_welcome.scss b/practice/practice-02/src/styles/layouts/_welcome.scss index 97fcf74..8dfbca6 100644 --- a/practice/practice-02/src/styles/layouts/_welcome.scss +++ b/practice/practice-02/src/styles/layouts/_welcome.scss @@ -1,6 +1,7 @@ .delivery-text-box { position: relative; display: inline-block; + font-size: $fs-xxx-lg; } .welcome { @@ -47,7 +48,7 @@ &__food-img:nth-child(4) { @extend %absolute; - @include set-location($bottom: 0px, $right: 80px); + @include set-location($bottom: 0, $right: 80px); } &__food-img:nth-child(5) { @@ -78,17 +79,19 @@ &__arrow-img-up { @extend %absolute; @include set-location($top: -15px, $right: 40px); + + z-index: -1; } &__mint-img { @extend %absolute; - @include set-location($bottom: 90px, $right: 0px); + @include set-location($bottom: 90px, $right: 0); } // End banner // Start content &__content { - @include size(calc(428px - 48px), auto); + @include size(380px, auto); @extend %d-flex; @include flex-layout($direction: column); @@ -148,7 +151,7 @@ &__underline-img-container { @extend %absolute; - @include set-location($bottom: -27px, $left: 0px); + @include set-location($bottom: -27px, $left: 0); } &__description { @@ -177,7 +180,6 @@ &__text-input { @include size(100%, auto); - font-size: $fs-md; border: none; &:focus { @@ -284,11 +286,16 @@ } // Start content + + &__head-arrow-container { + display: none; + } + &__content { @include size(auto, auto); padding-left: 70px; - padding-right: 0px; + padding-right: 0; padding-top: 70px; max-width: 560px; } @@ -346,7 +353,7 @@ @media screen and (min-width: 1200px) { .welcome { - padding-top: 0px; + padding-top: 0; // Start banner &__banner { diff --git a/practice/practice-02/src/styles/main.scss b/practice/practice-02/src/styles/main.scss index 6ae40f4..cbf8b6d 100644 --- a/practice/practice-02/src/styles/main.scss +++ b/practice/practice-02/src/styles/main.scss @@ -9,8 +9,6 @@ // Components @import "./components/button"; -@import "./components/toggle-menu"; -@import "./components/logo"; @import "./components/card-item"; // Layouts From 3845cc9c8930dc33cd4e657892646081226f4019 Mon Sep 17 00:00:00 2001 From: Nezumi Date: Mon, 31 Jul 2023 21:13:25 +0700 Subject: [PATCH 2/3] Update UI for welcome and offer section --- practice/practice-02/package.json | 2 +- .../src/styles/layouts/_header.scss | 2 +- .../src/styles/layouts/_offer.scss | 4 ++ .../src/styles/layouts/_service.scss | 7 ++- .../src/styles/layouts/_welcome.scss | 59 ++++++++++++++++++- 5 files changed, 67 insertions(+), 7 deletions(-) diff --git a/practice/practice-02/package.json b/practice/practice-02/package.json index 6669216..73ecf04 100644 --- a/practice/practice-02/package.json +++ b/practice/practice-02/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Practice 02", "scripts": { - "start": "rm -rf build && rm -rf .parcel-cache && parcel ./src/*.pug --no-cache --no-source-maps", + "start": "parcel ./src/*.pug --no-cache --no-source-maps", "build": "rm -rf build && rm -rf .parcel-cache && parcel build ./src/*.pug --no-cache --no-source-maps --dist-dir dist", "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/practice/practice-02/src/styles/layouts/_header.scss b/practice/practice-02/src/styles/layouts/_header.scss index 81b5083..85b066f 100644 --- a/practice/practice-02/src/styles/layouts/_header.scss +++ b/practice/practice-02/src/styles/layouts/_header.scss @@ -1,8 +1,8 @@ .header { @extend %absolute; @include set-location($top: 0, $right: 0, $left: 0); - @include size(428px, auto); + min-width: 428px; margin: auto; } diff --git a/practice/practice-02/src/styles/layouts/_offer.scss b/practice/practice-02/src/styles/layouts/_offer.scss index 1e4e489..75cb543 100644 --- a/practice/practice-02/src/styles/layouts/_offer.scss +++ b/practice/practice-02/src/styles/layouts/_offer.scss @@ -77,6 +77,10 @@ row-gap: 30px; } + + &__description { + padding-inline: 24px; + } } } diff --git a/practice/practice-02/src/styles/layouts/_service.scss b/practice/practice-02/src/styles/layouts/_service.scss index 0f45a34..a245409 100644 --- a/practice/practice-02/src/styles/layouts/_service.scss +++ b/practice/practice-02/src/styles/layouts/_service.scss @@ -101,15 +101,16 @@ } } +@media screen and (min-width: 600px) { + //TODO +} + @media screen and (min-width: 840px) { %absolute_840 { position: absolute; } .service { - max-width: $max-width; - margin-inline: auto; - &__container { @include flex-layout($align: center); diff --git a/practice/practice-02/src/styles/layouts/_welcome.scss b/practice/practice-02/src/styles/layouts/_welcome.scss index 8dfbca6..11838f5 100644 --- a/practice/practice-02/src/styles/layouts/_welcome.scss +++ b/practice/practice-02/src/styles/layouts/_welcome.scss @@ -120,11 +120,11 @@ border-radius: 100px; padding: 4px; margin-left: 10px; - font-size: $fs-xx-sm; } &__text-box-content { font-family: $secondary-font; + font-size: $fs-xx-sm; } &__icon-container { @@ -146,7 +146,6 @@ font-size: $fs-xx-lg; text-transform: capitalize; font-weight: 900; - max-width: 530px; } &__underline-img-container { @@ -271,6 +270,58 @@ display: none; } +@media screen and (min-width: 600px) { + .welcome { + &__container { + max-width: unset; + } + + &__banner-container { + width: unset; + } + + &__main-image { + margin-inline: auto; + position: relative; + padding-left: 50px; + } + + &__food-img:nth-child(2) { + @extend %absolute; + @include set-location($bottom: 75px, $left: 14px); + } + + &__food-img:nth-child(3) { + @extend %absolute; + @include set-location($bottom: -7px, $left: 105px); + } + + &__food-img:nth-child(4) { + @extend %absolute; + @include set-location($bottom: 0, $right: 80px); + } + + &__food-img:nth-child(5) { + @extend %absolute; + @include set-location($bottom: 85px, $right: 15px); + } + + &__review-card { + @extend %absolute; + @include set-location($top: 100px, $left: 10px); + } + + &__rate-card { + @extend %absolute; + @include set-location($top: 103px, $right: 0); + } + + &__content { + width: fit-content; + } + } +} + @media screen and (min-width: 840px) { .welcome { &__container { @@ -418,6 +469,10 @@ padding-top: 81px; } + &__heading { + max-width: 530px; + } + &__text-box { padding-left: 1px; } From 999471e697e5ad8814c46ed7312d588e6afe103f Mon Sep 17 00:00:00 2001 From: Loi Phan Date: Tue, 1 Aug 2023 15:16:40 +0700 Subject: [PATCH 3/3] Update UI remaining section --- .../images/platform/background-tablet.png | Bin 0 -> 61594 bytes .../images/service/background-tablet.png | Bin 0 -> 22591 bytes practice/practice-02/src/layouts/footer.pug | 42 +++++----- practice/practice-02/src/sections/menu.pug | 22 +++--- practice/practice-02/src/sections/offer.pug | 30 +++---- .../practice-02/src/sections/platform.pug | 46 ++++++----- practice/practice-02/src/sections/service.pug | 44 ++++++----- practice/practice-02/src/sections/welcome.pug | 11 ++- .../src/styles/bases/_typography.scss | 42 +++++----- .../src/styles/layouts/_footer.scss | 49 ++++++++---- .../src/styles/layouts/_header.scss | 8 +- .../practice-02/src/styles/layouts/_menu.scss | 12 ++- .../src/styles/layouts/_navbar.scss | 2 +- .../src/styles/layouts/_platform.scss | 73 ++++++++++-------- .../src/styles/layouts/_service.scss | 71 ++++++++++------- .../src/styles/layouts/_welcome.scss | 42 +++++++--- 16 files changed, 291 insertions(+), 203 deletions(-) create mode 100644 practice/practice-02/src/assets/images/platform/background-tablet.png create mode 100644 practice/practice-02/src/assets/images/service/background-tablet.png diff --git a/practice/practice-02/src/assets/images/platform/background-tablet.png b/practice/practice-02/src/assets/images/platform/background-tablet.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb61250888ea6757f685167dbbb88a57dc28522 GIT binary patch literal 61594 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

`gnLKo z(djr^K7=d_x+fC$Busm!=r$Sg^%7<(P?`XTGLoq6g{rBj>K5G;%B(Qb5aZ9xXIqwW@A}|MhPnO%)HrHaZn6` zdN1K|`yEE^s1yusmM~Un=()8)2d(LzYlCP3q|k%q>DN-V6sCBP(q<_=*3N-YDYg_` zMY4rgq>ZlQQw}%1U8#fB(T9 z-QhWzMD*t4&N^tHCIDTdi*P|$e8 zaQT}xCu(G6;z}p$&vZq2UOj{tVjMuk?JAnneX4GHMoCyE@GDK9q)->HQIkCKGoicV z&#Qi-{KByRThphH*^Ncyr&kI@wys4L(JI4VYQZOs5Vg!mn5G4#={tq#bQ%Yp2@0H3 zG@GoM6gn0vc>S(C4Tp6>Tgl7^t=v9%Px(mKCr~AIH4^n%1^I_m7T$~s#34cM8=tr?e@H8=?tOH74C(_#p9@ufd!`#I33Zy_nS$q(;@ZE$)K1WQ_Vnv3%gEE8 zQHbZxI*eM13n<7gcyQ^cYW+cqNyU8v)yPjeq4mYkm8W<1TBnW;Mk4B#O7g{ujjX*UdPu_m*${&SSJkj@H%Gvgtd?);M-38U5c1E|p?ijkmrp?K~ zG5hYX0_K)Xm6A?wnT&#~`qzw(PTjjVOr}$Vp&Q)qdzDIOzPEDmN3L;U=W!`6=Yeh! zej#ilxLF^w$ML-LtoJ-#8F_`wKqtzqc>#nUNK0`yx*D#+$mrkfMD#z^0D3GVG^u!u zgb)o{9ibcPsUo>Z50FVnsUk5HPThGLJ=@(fsI6K{P`YWoQ!59IZAgr@ z)NwSQRb4#r9;V=d(=Aa-3H$M~i%uU)7S#L^#x10jU!*;2bWb@9AQ#u``%yt?sn^NM z3U$_%`V1;$N|0qRW-J-nUlZtJ!q`Jje>Q4DBD!X$c8T>AI^dx@$|?~+y)|P&7)31I zV)U_enE2yp)t?;>i`i)m$oTl;lp;&97qXt}(zNj~ExkzrcbURL6FVwA*>_>~v~c0( zQaTw}jY}z}vT;ni#X9i%m12N@XRXnKP;{hI;`sHeD#vda8k8foQ8?h>S@doAr!RwR z9x2|l=&UcyJ|t;bx6O3U==$ELe*PfrSbhOoLD0eqf?=L5=w`{+5^y%TNl4h^Vug`B z5l6QtxI!*1q{ZS!C{I(9;()Fth+QRl6ddKc_QTt{{&CrZ+V^#IT4yI)B5}uk^EjxnyW?0(yfHC@Mp@_anZlRK|;|;cPovCR)O_1C* zJ(6b3!s9IMZnKRdq4#1LfgZ`$jBFSaQ0q#=Bqikc#?Py$KSK&&lckiOhWC&ZQ0@=W z#S=g}XDksjX9IzObjwXcu2J>hE|gN0D&4l{c!;XQR#dN}GmaEw+IX&nX+L7D3wlpN z&1E5GKG}ES-b*No)3~hr)z6gH`6xl_R28`W{=^hcUzyx9|b?kq^#eof@d2ji(mZ+l(Gm_pm{0=b7#x=BvWl{ znZRe&*MVd5dxxgo1dUoLAS_Ir0_C?;kHRw#KW^%u%Z*aSb>Mw6ghV_aGSN+y(G}AI z19W3OC2UF1Wuc651euIPKaTGInNHe+KFB#LImf(?G<}RvD%O*ZcnAgdOh

9Y)3W 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 literal 0 HcmV?d00001 diff --git a/practice/practice-02/src/assets/images/service/background-tablet.png b/practice/practice-02/src/assets/images/service/background-tablet.png new file mode 100644 index 0000000000000000000000000000000000000000..ae824c2a03c0a082c5a105ff7236e7d469748250 GIT binary patch literal 22591 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 Ldb>i;@%8@!dUikx literal 0 HcmV?d00001 diff --git a/practice/practice-02/src/layouts/footer.pug b/practice/practice-02/src/layouts/footer.pug index fbef4f5..e660ff7 100644 --- a/practice/practice-02/src/layouts/footer.pug +++ b/practice/practice-02/src/layouts/footer.pug @@ -1,43 +1,43 @@ -- var image_footer_path = "./assets/images/footer/"; -- var about_us_links = ["About Us", "Service Us", "Contact", "Company"]; -- var company_links = ["Partnership", "Terms of Use", "Privacy", "Sitemap"]; +- var image_footer_path = './assets/images/footer/'; +- var about_us_links = ['About Us', 'Service Us', 'Contact', 'Company']; +- var company_links = ['Partnership', 'Terms of Use', 'Privacy', 'Sitemap']; footer.footer .footer__container .footer__introduction - p.footer__brand-name.primary-text Foodhut + p.footer__brand-name.text--primary Foodhut p.footer__description Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor .footer__social-media - a.footer__social-link(href="javascript:void(0)") + a.footer__social-link(href='javascript:void(0)') img.facebook-icon( - src=image_footer_path + "facebook.png", - alt="Facebook icon" + src=image_footer_path + 'facebook.png', + alt='Facebook icon' ) - a.footer__social-link(href="javascript:void(0)") + a.footer__social-link(href='javascript:void(0)') img.instagram-icon( - src=image_footer_path + "instagram.png", - alt="Instagram icon" + src=image_footer_path + 'instagram.png', + alt='Instagram icon' ) - a.footer__social-link(href="javascript:void(0)") + a.footer__social-link(href='javascript:void(0)') img.twitter-icon( - src=image_footer_path + "twitter.png", - alt="Twitter icon" + src=image_footer_path + 'twitter.png', + alt='Twitter icon' ) .footer__information .footer__about-us - h3.footer__heading.primary-text About Us + h3.footer__heading.text--primary About Us .footer__link each item in about_us_links - a.link-text(href="javascript:void(0)")= item + a.link-text(href='javascript:void(0)')= item .footer_company - h3.footer__heading.primary-text Company + h3.footer__heading.text--primary Company .footer__link each item in company_links - a.link-text(href="javascript:void(0)")= item + a.link-text(href='javascript:void(0)')= item .footer__contact - h3.footer__heading.primary-text Get in touch + h3.footer__heading.text--primary Get in touch p.footer__description Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor - form.footer__form(action="#") - input.footer__email-input(type="text", placeholder="Email") - button.footer__submit-btn(type="submit") Subscribe + form.footer__form(action='#') + input.footer__email-input(type='text', placeholder='Email') + button.footer__submit-btn(type='submit') Subscribe p.footer__copyright Copyright © 2022 Foodhut. diff --git a/practice/practice-02/src/sections/menu.pug b/practice/practice-02/src/sections/menu.pug index 0ef3ccc..fae4769 100644 --- a/practice/practice-02/src/sections/menu.pug +++ b/practice/practice-02/src/sections/menu.pug @@ -1,21 +1,21 @@ -- var avatar_img_path = "./assets/images/avatar/"; -- var food_img_path = "./assets/images/food/"; +- var avatar_img_path = './assets/images/avatar/'; +- var food_img_path = './assets/images/food/'; -- var list_category = ["Ramen", "Breakfast", "Lunch", "Dinner", "Maxican", "Italian", "Desserts", "Drinks"]; -- var list_image_food = [food_img_path + "food-1.png", food_img_path + "food-2.png", food_img_path + "food-3.png", food_img_path + "food-4.png", food_img_path + "food-5.png", food_img_path + "food-6.png", food_img_path + "food-7.png", food_img_path + "food-8.png"]; -- var default_food_data = { price: "10", ratePoint: "4.5", foodName: "Kebab", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; +- var list_category = ['Ramen', 'Breakfast', 'Lunch', 'Dinner', 'Maxican', 'Italian', 'Desserts', 'Drinks']; +- var list_image_food = [food_img_path + 'food-1.png', food_img_path + 'food-2.png', food_img_path + 'food-3.png', food_img_path + 'food-4.png', food_img_path + 'food-5.png', food_img_path + 'food-6.png', food_img_path + 'food-7.png', food_img_path + 'food-8.png']; +- var default_food_data = { price: '10', ratePoint: '4.5', foodName: 'Kebab', foodDescription: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry', avatarImageList: [{ avatarUrl: avatar_img_path + 'avatar-1.png' }, { avatarUrl: avatar_img_path + 'avatar-2.png' }, { avatarUrl: avatar_img_path + 'avatar-3.png' }] }; section.menu .menu__container h2.menu__heading - span.primary-text Menu - = " That " - span.secondary-text Always - = " Make You Fall In " - span.primary-text Love + span.text--primary Menu + = ' That ' + span.text--secondary Always + = ' Make You Fall In ' + span.text--primary Love .menu__list-category each item in list_category - a.menu__category-item.link-text(href="javascript:void(0)")= item + a.menu__category-item.link-text(href='javascript:void(0)')= item .menu__card-list each url in list_image_food - var image_food = { imageUrl: url }; diff --git a/practice/practice-02/src/sections/offer.pug b/practice/practice-02/src/sections/offer.pug index ade9599..0e9500b 100644 --- a/practice/practice-02/src/sections/offer.pug +++ b/practice/practice-02/src/sections/offer.pug @@ -1,24 +1,24 @@ -- var offer_img_path = "./assets/images/offer/"; -- var avatar_img_path = "./assets/images/avatar/"; -- var food_img_path = "./assets/images/food/"; +- var offer_img_path = './assets/images/offer/'; +- var avatar_img_path = './assets/images/avatar/'; +- var food_img_path = './assets/images/food/'; -- var food_1 = { imageUrl: food_img_path + "food-1.png", price: "10", ratePoint: "4.5", foodName: "Kebab", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; -- var food_2 = { imageUrl: food_img_path + "food-2.png", price: "15", ratePoint: "4.8", foodName: "Chicken Tikka", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-4.png" }, { avatarUrl: avatar_img_path + "avatar-5.png" }, { avatarUrl: avatar_img_path + "avatar-6.png" }] }; -- var food_3 = { imageUrl: food_img_path + "food-3.png", price: "8", ratePoint: "4.2", foodName: "Desi Chowmein", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-7.png" }, { avatarUrl: avatar_img_path + "avatar-8.png" }, { avatarUrl: avatar_img_path + "avatar-9.png" }] }; -- var food_4 = { imageUrl: food_img_path + "food-4.png", price: "28", ratePoint: "5.0", foodName: "Chicken Chargha", foodDescription: "Lorem Ipsum is simply dummy text of the printing and typesetting industry", avatarImageList: [{ avatarUrl: avatar_img_path + "avatar-1.png" }, { avatarUrl: avatar_img_path + "avatar-2.png" }, { avatarUrl: avatar_img_path + "avatar-3.png" }] }; +- var food_1 = { imageUrl: food_img_path + 'food-1.png', price: '10', ratePoint: '4.5', foodName: 'Kebab', foodDescription: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry', avatarImageList: [{ avatarUrl: avatar_img_path + 'avatar-1.png' }, { avatarUrl: avatar_img_path + 'avatar-2.png' }, { avatarUrl: avatar_img_path + 'avatar-3.png' }] }; +- var food_2 = { imageUrl: food_img_path + 'food-2.png', price: '15', ratePoint: '4.8', foodName: 'Chicken Tikka', foodDescription: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry', avatarImageList: [{ avatarUrl: avatar_img_path + 'avatar-4.png' }, { avatarUrl: avatar_img_path + 'avatar-5.png' }, { avatarUrl: avatar_img_path + 'avatar-6.png' }] }; +- var food_3 = { imageUrl: food_img_path + 'food-3.png', price: '8', ratePoint: '4.2', foodName: 'Desi Chowmein', foodDescription: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry', avatarImageList: [{ avatarUrl: avatar_img_path + 'avatar-7.png' }, { avatarUrl: avatar_img_path + 'avatar-8.png' }, { avatarUrl: avatar_img_path + 'avatar-9.png' }] }; +- var food_4 = { imageUrl: food_img_path + 'food-4.png', price: '28', ratePoint: '5.0', foodName: 'Chicken Chargha', foodDescription: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry', avatarImageList: [{ avatarUrl: avatar_img_path + 'avatar-1.png' }, { avatarUrl: avatar_img_path + 'avatar-2.png' }, { avatarUrl: avatar_img_path + 'avatar-3.png' }] }; - var list_food = [food_1, food_2, food_3, food_4]; section.offer .offer__container .offer__dot-background img( - src=offer_img_path + "dot-background.png", - alt="Dot background image" + src=offer_img_path + 'dot-background.png', + alt='Dot background image' ) h2.offer__heading Today - = " " - span.primary-text Special - = " Offers" + = ' ' + span.text--primary Special + = ' Offers' p.offer__description Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s .offer__card-list each val in list_food @@ -26,7 +26,7 @@ section.offer .offer__rosemary-container picture source( - media="(min-width: 840px)", - srcset=offer_img_path + "rosemary-desktop.png" + media='(min-width: 840px)', + srcset=offer_img_path + 'rosemary-desktop.png' ) - img(src=offer_img_path + "rosemary-mobile.png", alt="Rosemary image") + img(src=offer_img_path + 'rosemary-mobile.png', alt='Rosemary image') diff --git a/practice/practice-02/src/sections/platform.pug b/practice/practice-02/src/sections/platform.pug index 11a2eef..0fe4beb 100644 --- a/practice/practice-02/src/sections/platform.pug +++ b/practice/practice-02/src/sections/platform.pug @@ -1,4 +1,4 @@ -- var platform_image_path = "./assets/images/platform/"; +- var platform_image_path = './assets/images/platform/'; - var list_food_image_path = [{mobile_image_path: platform_image_path + "food-1-mobile.png", desktop_image_path: platform_image_path + "food-1-desktop.png"}, {mobile_image_path: platform_image_path + "food-2-mobile.png", desktop_image_path: platform_image_path + "food-2-desktop.png"}, {mobile_image_path: platform_image_path + "food-3-mobile.png", desktop_image_path: platform_image_path + "food-3-desktop.png"}, {mobile_image_path: platform_image_path + "food-4-mobile.png", desktop_image_path: platform_image_path + "food-4-desktop.png"}]; section.platform @@ -6,43 +6,47 @@ section.platform .platform__image-container each item in list_food_image_path picture.platform__image-food - source(media="(min-width: 1200px)", srcset=item.desktop_image_path) - img(src=item.mobile_image_path, alt="Food image") + source(media='(min-width: 1200px)', srcset=item.desktop_image_path) + img(src=item.mobile_image_path, alt='Food image') picture source( - media="(min-width: 1200px)", - srcset=platform_image_path + "background-desktop.png" + media='(min-width: 1200px)', + srcset=platform_image_path + 'background-desktop.png' + ) + source( + media='(min-width: 600px)', + srcset=platform_image_path + 'background-tablet.png' ) img.platform__background-img( - src=platform_image_path + "background-mobile.png", - alt="Background image" + src=platform_image_path + 'background-mobile.png', + alt='Background image' ) picture source( - media="(min-width: 1200px)", - srcset=platform_image_path + "main-image-desktop.png" + media='(min-width: 1200px)', + srcset=platform_image_path + 'main-image-desktop.png' ) img.platform__main-image( - src=platform_image_path + "main-image-mobile.png", - alt="The image introduce the platform" + src=platform_image_path + 'main-image-mobile.png', + alt='The image introduce the platform' ) .platform__content h2.platform__heading It's Now - = " " - span.primary-text More Easy - = " to " - span.secondary-text Order - = " by Our Mobile " - span.primary-text App + = ' ' + span.text--primary More Easy + = ' to ' + span.text--secondary Order + = ' by Our Mobile ' + span.text--primary App p.platform__description All you need to do is downlode one of the best delivery apps, make a and most companies are opting for mobile app devlopment for food delivery .platform__store-container .platform__google-store img.platform__google-store-image( - src=platform_image_path + "chplay.png", - alt="Google store image" + src=platform_image_path + 'chplay.png', + alt='Google store image' ) .platform__app-store img.platform__app-store-image( - src=platform_image_path + "app-store.png", - alt="App store image" + src=platform_image_path + 'app-store.png', + alt='App store image' ) diff --git a/practice/practice-02/src/sections/service.pug b/practice/practice-02/src/sections/service.pug index 2902cb1..0826381 100644 --- a/practice/practice-02/src/sections/service.pug +++ b/practice/practice-02/src/sections/service.pug @@ -1,4 +1,4 @@ -- var service_img_path = "./assets/images/service/"; +- var service_img_path = './assets/images/service/'; - var list_service_category_1 = [{url_icon : service_img_path + "icon-1.png", content: "Online order"}, {url_icon : service_img_path + "icon-3.png", content: "Pre-Reservation"}, {url_icon : service_img_path + "icon-3.png", content: "Super chef"}]; - var list_service_category_2 = [{url_icon : service_img_path + "icon-2.png", content: "24/7 Service"}, {url_icon : service_img_path + "icon-3.png", content: "Oragonized foodhut place"}, {url_icon : service_img_path + "icon-3.png", content: "Clean Kitchen"}]; - var list_service_category = [list_service_category_1, list_service_category_2]; @@ -9,38 +9,42 @@ section.service .service__img-container picture source( - media="(min-width: 1200px)", - srcset=service_img_path + "background-desktop.png" + media='(min-width: 1200px)', + srcset=service_img_path + 'background-desktop.png' + ) + source( + media='(min-width: 600px)', + srcset=service_img_path + 'background-tablet.png' ) img.service__background-img( - src=service_img_path + "background-mobile.png", - alt="Background image" + src=service_img_path + 'background-mobile.png', + alt='Background image' ) picture source( - media="(min-width: 1200px)", - srcset=service_img_path + "main-character-desktop.png" + media='(min-width: 1200px)', + srcset=service_img_path + 'main-character-desktop.png' ) img.service__main-img( - src=service_img_path + "main-character-mobile.png", - alt="Main character image" + src=service_img_path + 'main-character-mobile.png', + alt='Main character image' ) picture source( - media="(min-width: 1200px)", - srcset=service_img_path + "vegetable-desktop.png" + media='(min-width: 1200px)', + srcset=service_img_path + 'vegetable-desktop.png' ) img.service__vegetable-img( - src=service_img_path + "vegetable-mobile.png", - alt="Vegetable background image" + src=service_img_path + 'vegetable-mobile.png', + alt='Vegetable background image' ) .service__content h2.service__heading We are - = " " - span.primary-text more - = " than " - span.secondary-text multiple - = " service" + = ' ' + span.text--primary more + = ' than ' + span.text--secondary multiple + = ' service' p.service__description This is a type of resturent which typically serves food and drink, in addition to light refreshments such as baked goods or snacks. The term comes frome the rench word meaning food .service__category each list in list_service_category @@ -49,7 +53,7 @@ section.service .service__category-item img.service__icon-category( src=item.url_icon, - alt="Icon category" + alt='Icon category' ) p.service__name-category= item.content - a.service__btn.btn(href="javascript:void(0)") About us + a.service__btn.btn(href='javascript:void(0)') About us diff --git a/practice/practice-02/src/sections/welcome.pug b/practice/practice-02/src/sections/welcome.pug index 477a457..30d0fe1 100644 --- a/practice/practice-02/src/sections/welcome.pug +++ b/practice/practice-02/src/sections/welcome.pug @@ -93,14 +93,17 @@ section.welcome p.welcome__text-box-content People Trust us h1.welcome__heading We're = ' ' - span.primary-text serious + span.text--primary serious = ' for ' - span.primary-text food + span.text--primary food = ' & ' .delivery-text-box - span.secondary-text delivery + span.text--secondary delivery .welcome__underline-img-container - img(src=welcome_img_path + 'underline.png', alt='Underline image') + img.welcome__underline-img( + src=welcome_img_path + 'underline.png', + alt='Underline image' + ) = '.' p.welcome__description Best cooks and best delivery guys all at your service. Hot tasty food will reach you in 60 minutes. diff --git a/practice/practice-02/src/styles/bases/_typography.scss b/practice/practice-02/src/styles/bases/_typography.scss index 72c0b7c..ec1f792 100644 --- a/practice/practice-02/src/styles/bases/_typography.scss +++ b/practice/practice-02/src/styles/bases/_typography.scss @@ -1,47 +1,47 @@ -$font-path: "../assets/fonts"; +$font-path: '../assets/fonts'; %fs-100 { font-size: 100%; } @font-face { - font-family: "Sofia Pro"; - src: url("#{$font-path}/sofia-pro-regular.woff2") format("woff2"), - url("#{$font-path}/sofia-pro-regular.ttf") format("truetype"); + font-family: 'Sofia Pro'; + src: url('#{$font-path}/sofia-pro-regular.woff2') format('woff2'), + url('#{$font-path}/sofia-pro-regular.ttf') format('truetype'); font-weight: 400; } @font-face { - font-family: "Sofia Pro"; - src: url("#{$font-path}/sofia-pro-medium.woff2") format("woff2"), - url("#{$font-path}/sofia-pro-medium.ttf") format("truetype"); + font-family: 'Sofia Pro'; + src: url('#{$font-path}/sofia-pro-medium.woff2') format('woff2'), + url('#{$font-path}/sofia-pro-medium.ttf') format('truetype'); font-weight: 600; } @font-face { - font-family: "Sofia Pro"; - src: url("#{$font-path}/sofia-pro-semi-bold.woff2") format("woff2"), - url("#{$font-path}/sofia-pro-semi-bold.ttf") format("truetype"); + font-family: 'Sofia Pro'; + src: url('#{$font-path}/sofia-pro-semi-bold.woff2') format('woff2'), + url('#{$font-path}/sofia-pro-semi-bold.ttf') format('truetype'); font-weight: 700; } @font-face { - font-family: "Sofia Pro"; - src: url("#{$font-path}/sofia-pro-bold.woff2") format("woff2"), - url("#{$font-path}/sofia-pro-bold.ttf") format("truetype"); + font-family: 'Sofia Pro'; + src: url('#{$font-path}/sofia-pro-bold.woff2') format('woff2'), + url('#{$font-path}/sofia-pro-bold.ttf') format('truetype'); font-weight: 900; } @font-face { - font-family: "Inter"; - src: url("#{$font-path}/inter.woff2") format("woff2"), - url("#{$font-path}/inter.ttf") format("truetype"); + font-family: 'Inter'; + src: url('#{$font-path}/inter.woff2') format('woff2'), + url('#{$font-path}/inter.ttf') format('truetype'); } @font-face { - font-family: "Poppins"; - src: url("#{$font-path}/poppins-medium.woff2") format("woff2"), - url("#{$font-path}/poppins-medium.ttf") format("truetype"); + font-family: 'Poppins'; + src: url('#{$font-path}/poppins-medium.woff2') format('woff2'), + url('#{$font-path}/poppins-medium.ttf') format('truetype'); } * { @@ -59,13 +59,13 @@ $font-path: "../assets/fonts"; color: $secondary-color; } -.primary-text { +.text--primary { @extend %fs-100; color: $primary-color; } -.secondary-text { +.text--secondary { @extend %fs-100; color: $secondary-color; diff --git a/practice/practice-02/src/styles/layouts/_footer.scss b/practice/practice-02/src/styles/layouts/_footer.scss index 410bb01..f3999de 100644 --- a/practice/practice-02/src/styles/layouts/_footer.scss +++ b/practice/practice-02/src/styles/layouts/_footer.scss @@ -69,15 +69,16 @@ } &__form { - @include size(378px, auto); + @extend %d-flex; + @include flex-layout($justify: space-between, $gap: 15px, $wrap: wrap); + max-width: 338px; margin-top: 27px; } &__email-input { @include size(178px, 48px); - margin-right: 15px; border-radius: 40px; padding-left: 25px; border: none; @@ -88,7 +89,7 @@ &__submit-btn { @include size(118px, 50px); - border-radius: 40px; + border-radius: 30px; color: $white; background-color: $primary-color; border: none; @@ -111,15 +112,15 @@ } } -@media screen and (min-width: 840px) { +@media screen and (min-width: 600px) { .footer { &__container { display: grid; grid-template-columns: 1fr 1fr; max-width: $max-width; width: auto; - padding-inline: 90px; column-gap: 10px; + padding-inline: 10px; } &__introduction { @@ -133,36 +134,52 @@ &__contact { grid-column: -2; } + + &__information { + @include flex-layout($justify: space-between); + + max-width: 310px; + } + } +} + +@media screen and (min-width: 840px) { + .footer { + &__container { + padding-inline: 30px; + } } } @media screen and (min-width: 1200px) { .footer { &__container { - grid-template-columns: auto auto auto; + grid-template-columns: 505px auto auto; padding-left: 135px; - column-gap: 40px; + column-gap: 30px; } &__introduction { - padding-top: 119px; - padding-left: 112px; + padding-top: 89px; + padding-left: unset; } &__information { @include flex-layout($justify: space-between, $gap: 30px); max-width: 304px; - padding-top: 155px; - } - - &__description { - margin-top: 9px; - padding-left: 1px; + padding-top: 138px; } &__contact { - padding-top: 155px; + padding-top: 138px; + padding-left: 5px; } } } + +@media screen and (min-width: 1300px) { + .footer__introduction { + padding-left: 112px; + } +} diff --git a/practice/practice-02/src/styles/layouts/_header.scss b/practice/practice-02/src/styles/layouts/_header.scss index 85b066f..e480a09 100644 --- a/practice/practice-02/src/styles/layouts/_header.scss +++ b/practice/practice-02/src/styles/layouts/_header.scss @@ -2,7 +2,7 @@ @extend %absolute; @include set-location($top: 0, $right: 0, $left: 0); - min-width: 428px; + width: 428px; margin: auto; } @@ -21,6 +21,12 @@ @include flex-layout($justify: space-between); } +@media screen and (min-width: 600px) { + .header { + width: auto; + } +} + @media screen and (min-width: 840px) { .header { @include size(auto, auto); diff --git a/practice/practice-02/src/styles/layouts/_menu.scss b/practice/practice-02/src/styles/layouts/_menu.scss index d6c389c..4e187d6 100644 --- a/practice/practice-02/src/styles/layouts/_menu.scss +++ b/practice/practice-02/src/styles/layouts/_menu.scss @@ -72,7 +72,7 @@ } } -@media screen and (min-width: 840px) { +@media screen and (min-width: 600px) { .menu { &__container { max-width: $max-width; @@ -82,6 +82,16 @@ max-width: 653px; } + &__card-list { + grid-auto-columns: unset; + grid-template-rows: 1fr 1fr; + row-gap: 66px; + } + } +} + +@media screen and (min-width: 840px) { + .menu { &__list-category { margin-inline: 59px; } diff --git a/practice/practice-02/src/styles/layouts/_navbar.scss b/practice/practice-02/src/styles/layouts/_navbar.scss index 1dcdc52..3d78f76 100644 --- a/practice/practice-02/src/styles/layouts/_navbar.scss +++ b/practice/practice-02/src/styles/layouts/_navbar.scss @@ -4,7 +4,7 @@ position: relative; cursor: pointer; - top: -1px; + top: -5px; &:before { @extend .line-icon-menu; diff --git a/practice/practice-02/src/styles/layouts/_platform.scss b/practice/practice-02/src/styles/layouts/_platform.scss index 3797922..8e0d498 100644 --- a/practice/practice-02/src/styles/layouts/_platform.scss +++ b/practice/practice-02/src/styles/layouts/_platform.scss @@ -79,25 +79,44 @@ } } +@media screen and (min-width: 600px) { + .platform { + &__container { + max-width: $max-width; + } + + &__image-container { + width: fit-content; + margin-inline: auto; + } + + &__main-image { + @include set-location($top: 0, $left: 28px); + } + + &__heading, + &__description { + max-width: unset; + } + } +} + @media screen and (min-width: 840px) { .platform { &__container { - @include flex-layout($direction: row-reverse, $align: center); + @include flex-layout( + $direction: row-reverse, + $align: center, + $justify: space-between + ); + // width: 100%; display: flex; - max-width: $max-width; - max-height: 632px; padding-top: 50px; } &__image-container { - @include size(100%, 500px); - } - - &__background-img { - @include set-location($top: 0, $right: 0); - - position: absolute; + margin-inline: unset; } &__main-image { @@ -140,43 +159,35 @@ } &__image-container { - @include size(600px, 632px); + @include size(auto, 632px); + padding-top: 20px; text-align: right; } &__main-image { - @include set-location($top: 20px, $right: 105px); - } - - &__background-img { - @include set-location($top: 20px, $right: 00px); - } - - &__image-food:first-child { - @include set-location($bottom: -65px, $right: 263px); - } - - &__image-food:nth-child(2) { - @include set-location($bottom: -40px, $right: 190px); - } - - &__image-food:nth-child(3) { - @include set-location($bottom: -8px, $right: 125px); + @include set-location($top: 20px, $right: 107px); } + &__image-food:first-child, + &__image-food:nth-child(2), + &__image-food:nth-child(3), &__image-food:nth-child(4) { - @include set-location($bottom: 80px, $right: 80px); + display: none; + } + + &__content { + padding-top: 33px; } &__heading, &__description, &__store-container { - padding-left: 47px; + padding-left: 45px; } &__description { - margin-top: 52px; + margin-top: 58px; } } } diff --git a/practice/practice-02/src/styles/layouts/_service.scss b/practice/practice-02/src/styles/layouts/_service.scss index a245409..addd166 100644 --- a/practice/practice-02/src/styles/layouts/_service.scss +++ b/practice/practice-02/src/styles/layouts/_service.scss @@ -22,29 +22,24 @@ } &__img-container { - @include size(auto, 436.81px); - + padding-top: 75px; position: relative; - padding-top: 80px; - } - - &__background-img { - @extend %absolute; - @include set-location($top: 75px, $left: 0); + width: fit-content; } &__main-img { @extend %absolute; - @include set-location($top: 70px, $left: 35px); + @include set-location($top: 73px, $left: 35px); } &__vegetable-img { @extend %absolute; @include set-location($bottom: -10px, $left: 50px); + z-index: 4; } &__content { - margin-top: 65px; + margin-top: 61px; padding-inline: 24px; z-index: 1; @@ -60,7 +55,6 @@ &__description { margin-top: 29px; - margin-inline: auto; max-width: 381px; } @@ -102,7 +96,27 @@ } @media screen and (min-width: 600px) { - //TODO + .service { + max-width: $max-width; + + &__main-img { + @include set-location($top: 30px, $left: 25px); + } + + &__heading { + max-width: unset; + } + + &__description { + max-width: 690px; + } + + &__category { + @include flex-layout($direction: row, $gap: 10px); + + margin-top: 29px; + } + } } @media screen and (min-width: 840px) { @@ -122,6 +136,7 @@ @include size($width: 100%); max-width: 460px; + margin-inline: auto; } &__img-container { @@ -148,12 +163,12 @@ } &__main-img { - @include set-location($top: 95px, $left: 35px); + @include set-location($top: 55px, $left: 25px); @extend %absolute_840; } &__vegetable-img { - @include set-location($bottom: 145px, $left: 50px); + @include set-location($bottom: 180px, $left: 50px); @extend %absolute_840; } @@ -161,16 +176,6 @@ max-width: 452px; margin: unset; } - - &__description { - max-width: 690px; - } - - &__category { - @include flex-layout($direction: row, $gap: 10px); - - margin-top: 29px; - } } } @@ -189,21 +194,27 @@ @extend %absolute_1200; } + &__img-container { + margin-inline: unset; + } + &__background-color { - @include set-location($left: -150px); + @include set-location($left: -151px); @include size(500px, 50%); border-radius: 50%; background: radial-gradient( circle, - rgba(253, 197, 94, 0.6), - rgba(253, 197, 94, 0.4), + rgba(253, 197, 94, 0.3), rgba(253, 197, 94, 0.2), + rgba(253, 197, 94, 0.1), rgba(253, 197, 94, 0.06), rgba(253, 197, 94, 0.01), rgba(253, 197, 94, 0), rgba(253, 197, 94, 0) ); + + clip-path: polygon(30% 0, 100% 0, 100% 100%, 30% 100%); } &__description { @@ -227,8 +238,12 @@ } &__content { - padding-top: 78px; + padding-top: 69px; padding-left: 29px; } + + &__btn { + margin-top: 26px; + } } } diff --git a/practice/practice-02/src/styles/layouts/_welcome.scss b/practice/practice-02/src/styles/layouts/_welcome.scss index 11838f5..8181de4 100644 --- a/practice/practice-02/src/styles/layouts/_welcome.scss +++ b/practice/practice-02/src/styles/layouts/_welcome.scss @@ -1,7 +1,7 @@ .delivery-text-box { position: relative; display: inline-block; - font-size: $fs-xxx-lg; + font-size: $fs-xx-lg; } .welcome { @@ -63,7 +63,7 @@ &__rate-card { @extend %absolute; - @include set-location($top: 103px, $right: 0); + @include set-location($top: 103px, $right: -5px); } &__background-banner { @@ -142,7 +142,7 @@ } &__heading { - margin-top: 12px; + margin-top: 16px; font-size: $fs-xx-lg; text-transform: capitalize; font-weight: 900; @@ -150,11 +150,11 @@ &__underline-img-container { @extend %absolute; - @include set-location($bottom: -27px, $left: 0); + @include set-location($bottom: -15px, $left: 0); } &__description { - margin-top: 40px; + margin-top: 36px; font-size: $fs-x-md; line-height: 140%; letter-spacing: -0.2px; @@ -164,7 +164,7 @@ &__search-form { @extend %d-flex; - margin-top: 32px; + margin-top: 30px; border-radius: 100px; border: 0.5px solid $black; max-width: 471px; @@ -317,7 +317,17 @@ } &__content { - width: fit-content; + width: unset; + padding-inline: unset; + padding-left: 24px; + } + + &__underline-img-container { + @include set-location($bottom: 0px, $left: 0); + } + + &__underline-img { + width: 180px; } } } @@ -362,8 +372,12 @@ line-height: 125%; } + &__underline-img { + width: unset; + } + &__underline-img-container { - @include set-location($bottom: -25px, $left: 8px); + @include set-location($bottom: -10px, $left: 8px); } &__description { @@ -432,11 +446,11 @@ } &__lines-background { - @include set-location($top: -85px, $right: -98px); + @include set-location($top: -85px, $right: -96px); } &__review-card { - @include set-location($top: 160px, $left: -47px); + @include set-location($top: 160px, $left: 1px); } &__rate-card { @@ -444,11 +458,11 @@ } &__food-img:nth-child(2) { - @include set-location($bottom: 108px, $left: -68px); + @include set-location($bottom: 108px, $left: -18px); } &__food-img:nth-child(3) { - @include set-location($bottom: -29px, $left: 102); + @include set-location($bottom: -29px, $left: 151px); } &__food-img:nth-child(4) { @@ -477,6 +491,10 @@ padding-left: 1px; } + .delivery-text-box { + font-size: $fs-xxx-lg; + } + &__description { margin-top: 29px; }