멋쟁이 사자처럼 FE 2기 - 17
220419 과제
1. Dropdown-selecbx 구현
2. CSS 실무테크닉 정리하기
3. 이미지 스프라이트 기법에 레티나 디스플레이 대응해보기
1. Dropdown-selecbx 구현
HTML
✍
 <body>
    <article class="cont-select">
      <h2 class="txt-hide">최애 프로그래밍언어를 선택해 주세요</h2>
      <button type="button" class="btn-select txt-ellipsis on">
        최애 프로그래밍 언어
      </button>
      <ul class="list-member">
        <li><button type="button" class="txt-ellipsis">Python</button></li>
        <li><button type="button" class="txt-ellipsis">Java</button></li>
        <li><button type="button" class="txt-ellipsis">JavaScript</button></li>
        <li><button type="button" class="txt-ellipsis">C#</button></li>
        <li><button type="button" class="txt-ellipsis">C/C++</button></li>
      </ul>
    </article>
  </body>
CSS
✍
    <style>
      .txt-ellipsis {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .cont-select {
        width: 200px;
        margin: 100px auto 0;
      }
      .btn-select {
        width: 100%;
        padding: 13px 20px 13px 14px;
        font-size: 12px;
        line-height: 14px;
        text-align: left;
        border: 1px solid #c4c4c4;
        box-sizing: border-box;
        border-radius: 10px;
        cursor: pointer;
        background: url(./icon-Triangle-down.png) no-repeat;
        background-position: right 14px center;
      }
      .btn-select:focus {
        border: 1px solid #9b51e0;
        outline: 3px solid #f8e4ff;
      }
      .btn-select.on {
        background-image: url(./icon-Triangle-down.png);
      }
      .btn-select.on + .list-member {
        display: block;
      }
      .list-member {
        display: none;
        margin-top: 20px;
        border: 1px solid #c4c4c4;
        box-shadow: 4px 4px 14px rgba(0, 0, 0, 0.2);
        border-radius: 10px;
      }
      .list-member li {
        padding: 5px 18px;
      }
      .list-member li button {
        display: block;
        width: 100%;
        padding: 10px 0;
        border: none;
        border-radius: 8px;
        cursor: pointer;
        background-color: #fff;
      }
      .list-member li button:focus,
      .list-member li button:hover {
        background-color: #f8e4ff;
      }
    </style>
💻
- 버튼태그안에 a태그 못쓴다.
 - 높이주지말고 패딩으로 처리 !
 - background이미지 쓸때 순서 상관 있음
 - li에는 클래스를 주지않고 부모인 ul에 클래스를 주자
 - 셀렉트박스 꾸밀때는
 
button
  ul 
 	li
    li
    li
    li
  /ul
 /button
2. CSS 실무테크닉 정리하기
- 
커스텀 input ,select 박스
디자인적인 개성을 주기 위해 스타일링이 까다로운 input 요소를 화면에서 숨기고 label 요소를 연결하여 스타일링을 한다. 
- input

 
.form-login .labl-hold::before {
  display: inline-block;
  content: "";
  width: 22px;
  height: 22px;
  margin-right: 8px;
  vertical-align: -5px;
  background-image: url("images_login/icon_check_empty.png");
}

.form-login .inp-hold:checked + .labl-hold::before {
  background-image: url("images_login/icon_check.png");
}
- select
 
    <button class="btn-select">당신의 에스파 최애 맴버는??</button>
    <ul class="list-member">
      <li><button type="button">카리나</button></li>
      <li><button type="button">지젤</button></li>
      <li><button type="button">닝닝</button></li>
      <li><button type="button">윈터</button></li>
    </ul>

- 
IR(Image Replacement) 태크닉
디자인적으로는 보이지 않지만 스크린리더나 브라우저를 위해 정보를 전달하는 텍스트를 html 곳곳에 숨겨두는 방법이다. 
- PC용 사용된 이미지내 의미있는 텍스트의 대체텍스트를 제공할때
 
.ir_pm{
	display:block;
	overflow:hidden;
	Font-size:1px;
	line-height:0;
	text-indent:-9999px;
}
- Mobile용 사용된 이미지내 의미있는 텍스트의 대체텍스트를 제공할때
 
.ir_pm{
	display:block;
	overflow:hidden;
	font-size:1px;
	line-height:0;
	color:transparent; 
  /* transparent 키워드는 IE9부터 사용 가능하기 때문에 PC에서는 빠져있습니다.
 https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#transparent */
}
- 스크린리더가 읽을 필요는 없지만 마크업 구조상 필요한 경우
 
.screen_out {
  overflow: hidden;
  position: absolute;
  width: 0;
  height: 0;
  line-height: 0;
  text-indent: -9999px;
}
- 중요한 이미지 대체텍스트로 이미지 off 시 에도 대체 텍스트를 보여주고자 할때
 
.ir_wa{
	display:block;
	overflow:hidden;
	position:relative;
	z-index:-1;
	width:100%;
	height:100%
}
- IE 구버전에서 인식을 못하는 경우가 있기 때문에 margin: -1px; 을 사용한다.
clip 속성을 통해 요소를 잘라내는것도 가능함. 
.blind {
	position: absolute;
	clip: rect(0 0 0 0);
	width: 1px;
	height: 1px;
	margin: -1px;
	overflow: hidden;
}
3. 이미지 스프라이트 기법에 레티나 디스플레이 대응해보기
.icon-google::before {
  background: url(./images_login/css_sprites.png) -10px -10px;
  background-size: 103px;
}
.icon-naver::before {
  background: url(./images_login/css_sprites.png) -47px -6px;
  background-size: 100px;
}
.icon-kakao::before {
  background: url(./images_login/css_sprites.png) -5px -42px;
  background-size: 90px;
}
.icon-facebook::before {
  background: url(./images_login/css_sprites.png) -66px -4px;
  background-size: 85px;
}

- 이미지를 추가하거나 고칠때 곤란하고 스프라이트자체가 엄청 커진다.
 
Author And Source
이 문제에 관하여(멋쟁이 사자처럼 FE 2기 - 17), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hong462804/멋쟁이-사자처럼-FE-2기-17저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
