Jump to content

вопрос по верстке адаптивного портфолио


tom6710
 Share

Recommended Posts

всем привет

 

я дизайнер и решил сделать себе портфолио в нем очень простая  структура - всего несколько страниц (пока что готова только главная)

изучаю html и css всего пару дней поэтому решил обратиться к более опытным верстальщикам с просьбой посмотреть код - есть ли там какие-либо ошибки

 

https://0135e49cf5d5fc9fbe158f420c6188a79ef0ab74.googledrive.com/host/0B1zIB1VQMrphdm5QREd4dVBsUlU

 

код для сетки взял с http://www.responsivegridsystem.com

 

и вопрос как сделать чтобы отступы между блоками по горизонтали были равны отступам по вертикали? (сейчас отступы по горизонтали 1.6% от ширины) 

 

еще не понимаю в чем следующие ошибки :

 

  1. error.png Line 36, Column 14Stray end tag adress.
    					</adress>

  2. error.png Line 37, Column 10End tag div seen, but there were open elements.
    				</div>

  3. error.png Line 33, Column 55Unclosed element address.
                            	<address title="contact info">

 

 

 

 

Link to comment
Share on other sites

и вопрос как сделать чтобы отступы между блоками по горизонтали были равны отступам по вертикали? (сейчас отступы по горизонтали 1.6% от ширины)

Ну, во-первых, надо знать что margin считает проценты не так как вы думаете. Т.е. возьмём такой код, на первый взгляд непонятно почему отступ сверху и снизу такой конский (ведь 10% от 100px - это 10px). Но если знать как работает margin, то всё становится на свои места; а всё очень просто, margin всегда отсчитывает проценты от ширины родителя. Зная эту информацию уже можно пытаться рулить отступами.

еще не понимаю в чем следующие ошибки :

На них забейте. Нормального валидатора для HTML5 ещё нет.

Link to comment
Share on other sites

спасибо за ответ

с margin вроде понятно

но тогда возникает вопрос

в css для section group написанно что margin равен нулю тогда откуда берется это расстояние между рядами? по логике его тогда вообще не должно быть

/*  SECTIONS  */.section {	clear: both;	padding: 0;	margin: 0;}/*  COLUMN SETUP  */.col {	display: block;	float:left;	margin: 1% 0 1% 1.6%;}.col:first-child { margin-left: 0; }/*  GROUPING  */.group:before,.group:after {	content:"";	display:table;}.group:after {	clear:both;}.group {    zoom:1; /* For IE 6/7 */}/*  GRID OF THREE  */.span_3_of_3 {	width: 100%;}.span_2_of_3 {	width: 66.1%;}.span_1_of_3 {	width: 32.2%;}
Edited by tom6710
Link to comment
Share on other sites

а почему не смотря на то что

/*  GO FULL WIDTH AT LESS THAN 720 PIXELS */@media only screen and (max-width: 720px) {	.col { 		margin: 1% 0 1% 0%;	}}@media only screen and (max-width: 720px) {	.span_3_of_3 {		width: 100%; 	}	.span_2_of_3 {		width: 100%; 	}	.span_1_of_3 {		width: 100%;	}}

на телефоне у которого разрешение 480 на 800 сайт отображается 3 колонки?

Link to comment
Share on other sites

прочитал, поправил

http://deviceponsive.com/?url=https%3A%2F%2Fgoogledrive.com%2Fhost%2F0B1zIB1VQMrphdm5QREd4dVBsUlU#

спс

 

еще пару вопросов)

 

1. возможно вы знаете как можно при нынешней структуре сделать меню таким образом как здесь : http://www.saywhat-studio.com (при прокрутке оно остается приклеенным к верхней части окна) 

2. почему в футере ul с линками на соцсети (id="social") находится не на одном уровне с языковым и копиратовым параграфами а на пару пикселей ниже в то время как в хедере на одном?

Link to comment
Share on other sites

применил position fixed к элементам внутри колонок header 

h1, #menu, address {	position: fixed;}

но вот что получилось https://googledrive.com/host/0B1zIB1VQMrphdm5QREd4dVBsUlU

 

почему элементы накладываются друг на друга при уменьшении окна?

Edited by tom6710
Link to comment
Share on other sites

Сделал вместо 
h1, #menu, address {position: fixed;} 

header {position fixed;}

и добавил section паддинг топ 2em теперь при уменьшенном окне все так как хотел но сейчас почему-то оно стало выглядеть вот так
съезжает в лево

если оставлять 
h1, #menu, address {position: fixed;} 
и добавить паддинг топ то вообще ничего не меняется

Link to comment
Share on other sites

https://1a35b409daf99140323e4ed975dc9eb4a3f340c5.googledrive.com/host/0B1zIB1VQMrphSDJxYXJ4dFhPRVE/

 

сделал так сейчас вроде работает

/*  COLUMN SETUP  */.col, .fix {	display: block;	float:left;	margin: .35% 0 .4% 1%;}.col:first-child { margin-left: 0; }.fix {	padding-bottom: 2em;}.fix:first-child { margin-left: 0; }
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By zeiger2
      Здравствуйте! У меня стоит задача, что при наведении на блок li строка должна поменять цвет, в том числе и картинка. Я меняю картинку с помощью 
      background-image: none;     background: url(../img/check_icon_red.png) left no-repeat;   Но теперь картинка позицианируется не там где должна, её можно поставить на место только вручную, через -100px. Нужно поставить ровно туда, где она была. Должна быть в одном ряду с другими
    • By Mix9
      есть див с 5 img, при уменьшении экрана див выходит за него. Я добавил overflow: auto для этого div в надежде на то, что я смогу прокручивать фотки с помощью скроллбара, однако даже с ним почему-то я не вижу часть фоток которые вышли за границу. Что с этим можно сделать? класс video повторяется 5 раз, я тут оставил только 1 
      .content{ width: 90%; background-color: #333; } .video{ margin: 0px 4px 0px 4px; width: 310; display: flex; flex-direction:column; } .video_button_text{ margin-top: 10px; display: flex; flex-direction: row; font-size: 20px; color: white; } .video_text_div{ display: inline-block; width: 250px; } .video_text{ text-align: justify-all; margin: 0px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .slidan_videos{ margin: 0px 10px 0px 20px; overflow: auto; width: auto; margin-bottom: 50px; display: flex; flex-direction: row; justify-content: space-around; } <div class="content"> <div class = slidan_videos> <div class = video> <div> <a href = 'ссылка'><img class="img" src=""картинка"></a> </div> <div class = video_button_text> <div class = avatarka_div> <a href="ссылка" target="_blank"><img class = avatarka src="картинка"></a> </div> <div class = video_text_div> <p class = video_text><a href="ссылка">текст</a></p> </div> </div> </div>
    • By Марко
      Добрый день. Начинающий программист, столкнулся с проблемой. Селектор .class не работает должным образом. Несмотря на правильное, я надеюсь, описание, на web-странице не отображается ни одно изображение. С чем может быть связано? Заранее спасибо за помощь. 



    • By Kaido
      Использую готовый плагин для модальных окон(от MaxGraph). Проблема в том, что когда у меня открыто два модальных окна, для примера Форма + Политика конфендициальности, и мне нужно закрыть политику вместе с ней закрывается и другое модальное окно. В JS я не сильно разбираюсь(собственно из за этого и использую готовый плагин), можете помочь кто работал с этим плагином? Я примерно понимаю как он работает, но реализовать чтобы закрывалось только одно не получается.
       
        <div class="content"> <button class="modal-btn" data-path="first" data-animation="fadeInUp" data-speed="1500">Открыть окно 1</button> </div> <div class="modal"> <div class="modal__wrapp" data-target="first"> <div class="modal__content"> <button class="modal__close">Закрыть</button> модальное окно <button data-path="policy">Политика</button> </div> </div> <div class="modal__wrapp" data-target="policy"> <div class="modal__content"> <button class="modal__close">Закрыть</button> политика </div> </div> </div> .modal { --transition-time: 0.3s; position: fixed; left: 0; top: 0; right: 0; bottom: 0; z-index: 1000; cursor: pointer; overflow-y: auto; overflow-x: hidden; text-align: center; opacity: 0; visibility: hidden; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp { display: none; cursor: default; width: fit-content; height: fit-content; } .modal__content{ position: absolute; left: 500px; width: 500px; height: 500px; display: flex; color: white; flex-direction: column; text-align: left; background-color: #000; } .modal__content button{ width: 200px; height: 50px; margin: 50px 0; } .modal.is-open { opacity: 1; visibility: visible; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp.modal-open { display: flex; } .disable-scroll { position: relative; overflow: hidden; height: 100vh; position: fixed; left: 0; top: 0; width: 100%; } .fade { opacity: 0; transition: opacity var(--transition-time); } .fade.animate-open { opacity: 1; transition: opacity var(--transition-time); } .fadeInUp { opacity: 0; transform: translateY(vw(-100)); transition: opacity var(--transition-time), transform var(--transition-time); } .fadeInUp.animate-open { opacity: 1; transform: translateY(0); transition: opacity var(--transition-time), transform var(--transition-time); } .modal__wrapp[data-target="policy"] .modal__content{ left: 1050px; background-color: #000; opacity: .5; } class Modal { constructor(options) { let defaultOptions = { isOpen: () => {}, isClose: () => {}, } this.options = Object.assign(defaultOptions, options); this.modal = document.querySelector('.modal'); this.speed = false; this.animation = false; this.isOpen = false; this.modalContainer = false; this.previousActiveElement = false; this.fixBlocks = document.querySelectorAll('.fix-block'); this.focusElements = [ 'a[href]', 'input', 'button', 'select', 'textarea', '[tabindex]' ]; this.events(); } events() { if (this.modal) { document.addEventListener('click', function(e){ const clickedElement = e.target.closest('[data-path]'); if (clickedElement) { let target = clickedElement.dataset.path; let animation = clickedElement.dataset.animation; if (clickedElement.classList.contains('modal-close')) { this.close(); } let speed = clickedElement.dataset.speed; this.animation = animation ? animation : 'fade'; this.speed = speed ? parseInt(speed) : 300; this.modalContainer = document.querySelector(`[data-target="${target}"]`); this.open(); return; } if (e.target.closest('.modal__close')) { this.close(); return; } }.bind(this)); window.addEventListener('keydown', function(e) { if (e.keyCode == 27) { if (this.isOpen) { this.close(); } } if (e.keyCode == 9 && this.isOpen) { this.focusCatch(e); return; } }.bind(this)); this.modal.addEventListener('click', function(e) { if (!e.target.classList.contains('modal__wrapp') && !e.target.closest('.modal__wrapp') && this.isOpen) { this.close(); } }.bind(this)); } } open() { this.previousActiveElement = document.activeElement; this.modal.style.setProperty('--transition-time', `${this.speed / 1000}s`); this.modal.classList.add('is-open'); this.disableScroll(); this.modalContainer.classList.add('modal-open'); this.modalContainer.classList.add(this.animation); setTimeout(() => { this.options.isOpen(this); this.modalContainer.classList.add('animate-open'); this.isOpen = true; this.focusTrap(); }, this.speed); } close() { if (this.modalContainer) { this.modalContainer.classList.remove('animate-open'); this.modalContainer.classList.remove(this.animation); this.modal.classList.remove('is-open'); this.modalContainer.classList.remove('modal-open'); this.enableScroll(); this.options.isClose(this); this.isOpen = false; this.focusTrap(); } } focusCatch(e) { const focusable = this.modalContainer.querySelectorAll(this.focusElements); const focusArray = Array.prototype.slice.call(focusable); const focusedIndex = focusArray.indexOf(document.activeElement); if (e.shiftKey && focusedIndex === 0) { focusArray[focusArray.length - 1].focus(); e.preventDefault(); } if (!e.shiftKey && focusedIndex === focusArray.length - 1) { focusArray[0].focus(); e.preventDefault(); } } focusTrap() { const focusable = this.modalContainer.querySelectorAll(this.focusElements); if (this.isOpen) { focusable[0].focus(); } else { this.previousActiveElement.focus(); } } disableScroll() { let pagePosition = window.scrollY; this.lockPadding(); document.body.classList.add('disable-scroll'); document.body.dataset.position = pagePosition; document.body.style.top = -pagePosition + 'px'; } enableScroll() { let pagePosition = parseInt(document.body.dataset.position, 10); this.unlockPadding(); document.body.style.top = 'auto'; document.body.classList.remove('disable-scroll'); window.scroll({ top: pagePosition, left: 0 }); document.body.removeAttribute('data-position'); } lockPadding() { let paddingOffset = window.innerWidth - document.body.offsetWidth + 'px'; this.fixBlocks.forEach((el) => { el.style.paddingRight = paddingOffset; }); document.body.style.paddingRight = paddingOffset; } unlockPadding() { this.fixBlocks.forEach((el) => { el.style.paddingRight = '0px'; }); document.body.style.paddingRight = '0px'; } } const modal = new Modal({ isOpen: (modal) => { console.log(modal); console.log('opened'); }, isClose: () => { console.log('closed'); }, });  
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy