일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- vue.js
- 모바일 버전만들기
- 백준
- 18877번 Social Distancing
- java
- 일해라 개발자
- VUE
- 18881번
- BOJ
- 백준 BOJ
- BOJ Social Distancing
- BOJ 18881
- CSS
- 베리어블 폰트
- 텐서플로맛
- await
- social distancing
- BOJ 18877
- spring boot
- CCPC
- JavaScript
- 백준 Social Distancing II
- Spring Security
- 18877번
- async
- Catholic univ Computer Programming Contest
- BOJ Social Distancing II
- 백준 18877번
- Social Distancing II
- 반응형 웹
- Today
- Total
나아가는 길에 발자국을 찍어보자
[ 타이핑 페이지 만들기_3 ] <textarea> 상하좌우 가운데 정렬 && 폰트 사이즈 자동 조절 본문
[ 타이핑 페이지 만들기_3 ] <textarea> 상하좌우 가운데 정렬 && 폰트 사이즈 자동 조절
NAWIN 2020. 11. 25. 15:25이 두개의 기능을 만들 때, 조금 머리아팠던 기능이 가운데 정렬 기능이었다.
<textarea>
에 height를 지정을 해버리면 박스의 맨왼쪽 윗쪽부터 글씨가 쓰여져버리고
입력되어지는 글자들의 높이가 <textarea>
에서 지정한 height를 넘어가게되면 슬라이드바가 생긴다....
따라서 전체 입력된 글자들을 좌우 중앙정렬은 어렵지 않았으나, 상하 중앙 정렬이 발목을 잡았었다.
찾아보니까 라이브러리가 있긴있었다. 다만 내가 원하던 기능과 조금은 거리가 있어서 조금 더 찾아보다가 그냥 구현하기로 하였다.
중앙 정렬에 이어 미대생이 원했던 기능은 글자가 중앙 정렬이 되면서 글자수가 많아지면 글자의 크기가 줄어드는 것을 원했다. 이것도 예시 페이지를 보여줬는데, 못찾았다ㅜㅜ. 구현한 2개의 기능을 정리해 보고자 한다.
1. <textarea>
정렬
1) 기능
-
textarea에 사용자가 글자를 입력할 때, 감지하여 세로 스크롤 바가 생기지 않으면서 textarea의 높이를 자동으로 조절한다.
-
textarea의 높이가 유동적으로 변하더라도 상하 정렬이 중앙으로 유지 되어야 한다.
2) 구현
[1] 커다란 <div>
안에 verrical-align을 주어 상하 정렬을 시킨다.
[2] <textarea>
를 만들어 자동 높이 조절을 해주면 내용이 변경되어도 유동성이 있게 상하 정렬이 가능해진다.
3) <textarea>
자동 높이 조절 기능
-
default rows를 1로 주고 처음에 화면이 로딩되면 1줄만 보이게 한다.(지정안해주면 2줄이 기본이되어 디폴트 글자들을 1줄인데 textarea는 2줄이 생성되어 글자들이 중앙배치가 안되었다ㅜㅜ, 물론 textarea자체는 중앙이었지만....)
<textarea id="input-letter" maxlength="40" rows="1" style="resize: none;" spellcheck="false"></textarea>
-
<textarea>
에 height를 auto 로 주면 문자열 크기에 맞게<textarea>
의 높이가 정해진다. (세로 줄이 줄어들 때) -
<textarea>
의 높이를 scrollHeight값으로 설정하여<textarea>
의 높이를 재설정. (세로 줄이 늘어날 때)-
scrollHeight : scroll되어 나타나는 부분까지 높이를 반환한다.
-
$("#input-letter").on("propertychange change keyup paste input",function(){
$(this)[0].style.height='auto';
$(this).height( $(this).prop('scrollHeight'));
});
-
또는 다른방법의 자동 높이 조절 (이게더 편한듯,,,,,)
$(this).height(1).height($(this).prop('scrollHeight'));
4) 상하 중앙 정렬
-
큰 div를 선언.
<div class="input-div">
<div>
<textarea id="input-letter" maxlength="40" rows="1" style="resize: none;" spellcheck="false"></textarea>
</div>
</div>
-
세로 정렬을 선언.
.input-div{
vertical-align: middle;
}
이렇게 선언하면 매우매우 중앙 정렬이 잘된다!
2. 폰트 사이즈 자동 조절 기능
1) 기능
-
쓰여지는 글자수에 따라 폰트사이즈 조절 기능.
2) 구현
-
사용자의 입력을 실시간 감지하여, 입력된 글자수를 파악하여 폰트 사이즈를 조절한다.
$("#input-letter").on("propertychange change keyup paste input",function(){
var content = $(this).val(); /*입력값 받아오기*/
if(length <= 6 && length>=0){
$("#input-letter").css("fontSize",'10rem');
}else if (length > 6 && length <=15 ){
$("#input-letter").css("fontSize",'8rem');
}
else if(length>15&&length<=28){
$("#input-letter").css('font-size','6rem');
}
else if(length>28){
$("#input-letter").css('font-size','4rem');
}
});
글자 수에 따라 폰트사이즈가 변한다!
'Projects > Font-page(미대생 졸전 도와주기)' 카테고리의 다른 글
[타이핑 페이지 만들기_5] 코딩친구의 훼방 1탄 : 불다 하지마:( (0) | 2020.12.10 |
---|---|
[타이핑 페이지 만들기_4] 배경 색도 랜덤이었으면 좋겠다라고 말하는 미대생 (0) | 2020.11.25 |
[타이핑 페이지 만들기_2] 마우스를 움직이면 폰트가 바뀐다고 (0) | 2020.11.24 |
[2차 미팅] 요구사항이....변했다고...? 새로 만들어야 한다고..? (0) | 2020.11.24 |
[타이핑 페이지 만들기_1] 제이쿼리를 사용해보자 (0) | 2020.11.18 |