자체게시판을 만들어보았습니다. 테스트한번 해주세요 > 자유게시판

자유게시판

자체게시판을 만들어보았습니다. 테스트한번 해주세요 정보

자체게시판을 만들어보았습니다. 테스트한번 해주세요

본문

 

 

php, mysql, vanilla js로 자체게시판을 만들어보았습니다.

 AI의 도움을 받아 함수가 필요하면 그때 그때 만들고, 상수가 필요하면 그때 그때 만들었습니다.

앞에 만든함수와 뒤에 만든 함수가 서로 충돌하면 고치고, 페이지가 꼬이면 바로 잡고있습니다.

그래도 처음 로그인과 게시판을 만들었다는데 의미를 두고 싶습니다.

pc에서 햄버거버튼을 여러번 눌러야 메뉴가 열리는 버그가 있습니다. 

id: test  ,  pw: test 

2106540763_1751022358.3397.png

아래코드가 햄버거 버튼을 누르면 메뉴가 나오는 코드입니다. pc에서는 몇번을 클릭해야 열리는데 왜그런지 고수님의 조언을 구합니다

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
<nav class="navigation" aria-label="주 메뉴">
<a href="<?= BASE_URL ?>/index.php" class="logo glow" aria-label="홈으로 이동"> Open Web Service </a>       
  <div class="header-right">
    <?php if (isset($_SESSION['mb_name'])): ?>
      <span class="username"><?= escapeHtml($_SESSION['mb_name']) ?>님</span>
    <?php else: ?>
      <a href="<?= BASE_URL ?>/member/login.php">로그인</a>
    <?php endif; ?>
  </div> 
<button type="button" class="menu-toggle"> <span class="hamburger-icon" >☰</span>  </button>
</nav>
<div id="myNav" class="overlay" style="height: 0%; transition: height 0.3s ease;">
  <a class="closebtn" onclick="closeNav()">×</a>
  <div class="overlay-content">
    <a href="<?= BASE_URL ?>/member/logout.php">로그아웃</a>
    <a href="https://ows.kr/content/web_dev.php">웹사이트 개발</a> 
    <a href="https://ows.kr/board/board_gallery/list.php"><i class="fa fa-list-alt"></i> 자유게시판</a>
    <a href="https://ows.kr/board/board_youtube/list.php"><i class="fa fa-list-alt"></i> 유튜브게시판</a>
    <?php if ($mbLevel === 10): ?>
      <a href="https://ows.kr/mail/view_mail.php">메일확인</a>
    <?php endif; ?>
  </div>
</div>
<script>
function openNav() {
  document.getElementById('myNav').style.height = '100%';
}

function closeNav() {
  document.getElementById('myNav').style.height = '0%';
}

document.addEventListener('DOMContentLoaded', function() {
  const menuToggle = document.querySelector('.menu-toggle');
  const myNav = document.getElementById('myNav');
  
  menuToggle.addEventListener('click', function() {
    if (myNav.style.height === '100%') {
      closeNav();
    } else {
      openNav();
    }
  });
});
</script>

 

감사합니다.

 

추천
1
  • 복사

댓글 5개

깔끔하고 가벼워서 좋은데요 ^^

 

고쳐야할 부분 몇개 적습니다

- 언급하신 햄버거 메뉴 문제

- 본인글 본인이 추천 가능

- 일본어, 중국어로 번역 직접 일본어로, 중국어로 바꿔 써야 해당 언어가 지원     차원에서는 좋을거 같습니다

- 코멘트의 좋아요?, 싫어요?  이미지가 폰트이미지인거 같은데 안보입니다

- 자신이 쓴 코멘트 좋아요 싫어요 클릭이 됩니다

- 글 상세보기에서 목록 수정하기 삭제하기가 링크가 걸려 있지 않습니다

  아직 수정중이신듯 버튼으로 링크 걸어서 넣으시면 될거 같습니다 (수정중이신지 이건 바로 새로고침하니 나오네요 )

- 목록에서 그림과 제목 사이의 마진이 좀 있으면 좋을듯 합니다

 

 

전체적으로 빠르게 동작하고 큰 이슈사항은 없는거 같습니다 : )

고생하셨습니다

@예뜨락 도움이 되는 피드백을 주셔서 감사드립니다.

에뜨락님의 피드백을 바탕으로 다시 수정하고 있습니다.

감사합니다.^^

document.addEventListener('DOMContentLoaded', function() {
const menuToggle = document.querySelector('.menu-toggle');
  
  menuToggle.addEventListener('click', function() {  
    const myNav = document.getElementById('myNav');
    if (myNav.style.height === '100%') {
      closeNav();
    } else {
      openNav();
    }
  });
});   이와 같이 const myNav = document.getElementById('myNav'); 를 안으로 넣어 보세요 콘솔에서만 확인해서 실제로 될련지는 모르겠습니다  간혹  밖에서 지정한 변수에 담긴 돔의 모든 것이 담겨 있어서 변경을 요하는 상태를 잘못 전달할 때가 ( 사용자가 잘못 생각해서  ) 있습니다  즉 클릭한 이후의 상태들을 실시간으로 담아야 되는데 고정된 상태만 담겨서 안될수 있습니다

@예뜨락 다른 곳에서 에러가 발생하는지 알려주신대로 해도 계속 같은 현상이 생겨서 네비게이션을 다시 만들었습니다.^^

<script src="//js/index.js" defer></script>

https://js/index.js  오류가 있습니다 폴더명이 누락 되거나 클론(쌍점)이 빠진듯 한데 한번 살펴 보시면 될거 같습니다

© SIRSOFT
현재 페이지 제일 처음으로