【日本製】贅沢おくるみ|6重ガーゼ×ヘリンボーン|出産祝い・OEM対応
新生児の肌に、
やさしく贅沢な日本製おくるみを。
6重ガーゼ × ヘリンボーンガーゼ
贅沢おくるみ|出産祝い・産院採用・OEM対応
購入する
赤ちゃんが最初に出会う布は、安心感をつくる大切な“はじめての肌着”です。
デリケートな肌に触れるものだからこそ、素材・製法・安全性に妥協はしません。
「贅沢おくるみ」は、空気を含む6重ガーゼと上質なヘリンボーンガーゼを重ね、軽さと柔らかさを両立。
まるでやさしい空気に包まれるように、新生児の眠りと抱っこ時間を心地よく支えます。
6重ガーゼの保温性
層に空気を含み、やさしく体温をキープ。季節を問わず快適です。
ヘリンボーンの上質感
しっとりとなめらかな風合い。肌への摩擦を抑えます。
洗うほどふわっと
お手入れのたびに柔らかさが育ち、使うほどに心地よく。
すやすや眠る赤ちゃんを見守る時間が、
家族のしあわせな記憶になります。
授乳ケープ
適度な厚みと通気性で、快適に授乳空間を確保。
ベビーカーの膝掛け
体温調節がしやすく、季節の行き来にも便利。
成長後はブランケット
軽い毛布として、大人になっても心地よさが続きます。
贈られた一枚が、月日とともに役割を変えながら暮らしに溶け込む。
――それが「一生ものの布」である理由です。
日本製の一貫体制
糸・織布・縫製まで国内工場。品質管理とトレーサビリティが明確。
新生児にやさしい
やわらかい肌触りで摩擦を抑制。毎日の洗濯にも安心です。
オリジナルカラー
施設やブランドイメージに合わせて色展開・刺繍のご提案が可能。
小ロットから
必要数に合わせて柔軟に対応。初期導入のリスクを抑えます。
高いブランディング性
名入れ刺繍・タグ・パッケージまで一貫対応。物販・記念品に最適。
国産品質と柔軟なOEMで、産院・ホテル・ギフト需要に価値ある一枚をお届けします。
高級宿・旅館で採用
ミシュラン5パビリオンの宿で採用。おもてなしの品質向上に貢献。
産婦人科での導入
退院時の贈り物として採用。家族の“最初のギフト”に選ばれています。
ギフト・物販で好評
宿泊施設のショップで人気。記念日や出産祝いの定番に。
“肌にすっとなじみ、赤ちゃんが落ち着いて眠ってくれる”
実感の声が、品質の確かな証です。
1
サンプル請求
触れてわかる日本製ガーゼの心地よさをご確認ください。
2
仕様ご相談
カラー・刺繍・タグ・パッケージ等を最適化してご提案。
3
ご発注
小ロットから柔軟に対応。納期のご相談も可能です。
4
製造・納品
国内工場で丁寧に製造し、安定した品質でお届けします。
A. 小ロットから承ります。ご希望数量に合わせてお見積りいたします。
A. 可能です。既存色のほか、施設やブランドに合わせた別注色をご提案します。
A. はい、質感を確認いただけるサンプル価格にてご用意しています。お気軽にご依頼ください。
A. 名入れ刺繍・タグ・パッケージなど、OEM仕様で一貫対応いたします。
A. 仕様と数量により異なります。まずはご希望条件をお知らせください。
A. ご家庭の洗濯機でお洗濯可能です。洗うほどふんわり感が増していきます。
/* ==========================================
Baby Care Landing Page JavaScript
Interactive Features & Animations
========================================== */
document.addEventListener('DOMContentLoaded', function() {
// Initialize all functionality
initNavigation();
initScrollAnimations();
initFAQ();
initSmoothScroll();
initScrollToTop();
initImageLoading();
console.log('贅沢おくるみ LP が正常に読み込まれました。');
});
/* ==========================================
Navigation Functions
========================================== */
function initNavigation() {
const navToggle = document.getElementById('nav-toggle');
const navMenu = document.getElementById('nav-menu');
const navLinks = document.querySelectorAll('.nav-link');
const header = document.querySelector('.header');
// Mobile menu toggle
if (navToggle && navMenu) {
navToggle.addEventListener('click', function() {
navMenu.classList.toggle('active');
navToggle.classList.toggle('active');
});
// Close menu when clicking on a link
navLinks.forEach(link => {
link.addEventListener('click', function() {
navMenu.classList.remove('active');
navToggle.classList.remove('active');
});
});
// Close menu when clicking outside
document.addEventListener('click', function(e) {
if (!navToggle.contains(e.target) && !navMenu.contains(e.target)) {
navMenu.classList.remove('active');
navToggle.classList.remove('active');
}
});
}
// Header background on scroll
if (header) {
window.addEventListener('scroll', function() {
if (window.scrollY > 50) {
header.style.background = 'rgba(255, 255, 255, 0.98)';
header.style.boxShadow = '0 2px 20px rgba(247, 211, 211, 0.3)';
} else {
header.style.background = 'rgba(255, 255, 255, 0.95)';
header.style.boxShadow = 'none';
}
});
}
// Active nav link highlighting
updateActiveNavLink();
window.addEventListener('scroll', updateActiveNavLink);
}
function updateActiveNavLink() {
const sections = document.querySelectorAll('section[id]');
const navLinks = document.querySelectorAll('.nav-link');
let currentSection = '';
const header = document.querySelector('.header');
const headerHeight = header ? header.offsetHeight : 100;
const scrollPosition = window.scrollY + headerHeight + 50;
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.offsetHeight;
if (scrollPosition >= sectionTop && scrollPosition < sectionTop + sectionHeight) {
currentSection = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('active');
const href = link.getAttribute('href');
if (href === `#${currentSection}`) {
link.classList.add('active');
}
});
}
/* ==========================================
Scroll Animations
========================================== */
function initScrollAnimations() {
const animatedElements = document.querySelectorAll(
'.product-item, .scene-item, .feature-item, .case-item, .step-item, .faq-item, .intro-content'
);
// Add animation classes
animatedElements.forEach((element, index) => {
if (index % 2 === 0) {
element.classList.add('fade-in');
} else {
element.classList.add('slide-in-left');
}
});
// Intersection Observer for animations
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver(function(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, observerOptions);
// Observe all animated elements
document.querySelectorAll('.fade-in, .slide-in-left, .slide-in-right').forEach(element => {
observer.observe(element);
});
// Special animation for hero elements
animateHeroElements();
}
function animateHeroElements() {
const heroText = document.querySelector('.hero-text');
const heroImage = document.querySelector('.hero-image');
if (heroText && heroImage) {
setTimeout(() => {
heroText.classList.add('slide-in-left', 'visible');
}, 300);
setTimeout(() => {
heroImage.classList.add('slide-in-right', 'visible');
}, 600);
}
}
/* ==========================================
FAQ Accordion
========================================== */
function initFAQ() {
const faqItems = document.querySelectorAll('.faq-item');
faqItems.forEach(item => {
const question = item.querySelector('.faq-question');
if (question) {
question.addEventListener('click', function() {
const isActive = item.classList.contains('active');
// Close all other FAQ items
faqItems.forEach(otherItem => {
if (otherItem !== item) {
otherItem.classList.remove('active');
}
});
// Toggle current item
if (isActive) {
item.classList.remove('active');
} else {
item.classList.add('active');
}
});
}
});
// Add keyboard navigation for FAQ
faqItems.forEach(item => {
const question = item.querySelector('.faq-question');
if (question) {
question.setAttribute('tabindex', '0');
question.addEventListener('keydown', function(e) {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
question.click();
}
});
}
});
}
/* ==========================================
Modal Functions
========================================== */
function initModal() {
const modal = document.getElementById('contactModal');
const closeBtn = document.querySelector('.close');
if (modal && closeBtn) {
// Close modal when clicking X
closeBtn.addEventListener('click', function() {
closeModal();
});
// Close modal when clicking outside
window.addEventListener('click', function(e) {
if (e.target === modal) {
closeModal();
}
});
// Close modal with Escape key
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape' && modal.style.display === 'block') {
closeModal();
}
});
}
}
function openSampleForm() {
const modal = document.getElementById('contactModal');
const modalTitle = document.getElementById('modalTitle');
const inquiryType = document.getElementById('inquiryType');
if (modal && modalTitle && inquiryType) {
modalTitle.textContent = 'サンプル請求フォーム';
inquiryType.value = 'sample';
modal.style.display = 'block';
document.body.style.overflow = 'hidden';
// Focus on first input
const firstInput = modal.querySelector('input[type="text"]');
if (firstInput) {
setTimeout(() => firstInput.focus(), 100);
}
}
}
function openConsultationForm() {
const modal = document.getElementById('contactModal');
const modalTitle = document.getElementById('modalTitle');
const inquiryType = document.getElementById('inquiryType');
if (modal && modalTitle && inquiryType) {
modalTitle.textContent = 'OEM・ご相談フォーム';
inquiryType.value = 'oem';
modal.style.display = 'block';
document.body.style.overflow = 'hidden';
// Focus on first input
const firstInput = modal.querySelector('input[type="text"]');
if (firstInput) {
setTimeout(() => firstInput.focus(), 100);
}
}
}
function closeModal() {
const modal = document.getElementById('contactModal');
if (modal) {
modal.style.display = 'none';
document.body.style.overflow = 'auto';
}
}
/* ==========================================
Form Handling
========================================== */
function initFormHandling() {
const form = document.getElementById('contactForm');
if (form) {
form.addEventListener('submit', function(e) {
e.preventDefault();
handleFormSubmission(form);
});
// Add real-time validation
const inputs = form.querySelectorAll('input, select, textarea');
inputs.forEach(input => {
input.addEventListener('blur', function() {
validateField(input);
});
input.addEventListener('input', function() {
clearFieldError(input);
});
});
}
}
function handleFormSubmission(form) {
const formData = new FormData(form);
const data = Object.fromEntries(formData);
// Validate form
if (!validateForm(form)) {
showNotification('入力内容に不備があります。', 'error');
return;
}
// Show loading state
const submitBtn = form.querySelector('button[type="submit"]');
const originalText = submitBtn.textContent;
submitBtn.textContent = '送信中...';
submitBtn.disabled = true;
// Simulate form submission (replace with actual API call)
setTimeout(() => {
console.log('Form submitted with data:', data);
// Reset form and close modal
form.reset();
closeModal();
// Show success message
showNotification('お問い合わせありがとうございます。\n担当者より24時間以内にご連絡いたします。', 'success');
// Reset button
submitBtn.textContent = originalText;
submitBtn.disabled = false;
// Analytics tracking (if needed)
trackFormSubmission(data.inquiryType);
}, 1500);
}
function validateForm(form) {
const requiredFields = form.querySelectorAll('[required]');
let isValid = true;
requiredFields.forEach(field => {
if (!validateField(field)) {
isValid = false;
}
});
return isValid;
}
function validateField(field) {
const value = field.value.trim();
const fieldName = field.name;
let isValid = true;
let errorMessage = '';
// Required field validation
if (field.required && !value) {
errorMessage = 'この項目は必須です。';
isValid = false;
}
// Email validation
if (fieldName === 'email' && value) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(value)) {
errorMessage = '有効なメールアドレスを入力してください。';
isValid = false;
}
}
// Phone validation
if (fieldName === 'phone' && value) {
const phoneRegex = /^[\d\-\+\(\)\s]+$/;
if (!phoneRegex.test(value)) {
errorMessage = '有効な電話番号を入力してください。';
isValid = false;
}
}
if (isValid) {
clearFieldError(field);
} else {
showFieldError(field, errorMessage);
}
return isValid;
}
function showFieldError(field, message) {
clearFieldError(field);
field.style.borderColor = '#ff6b6b';
field.style.backgroundColor = '#fff5f5';
const errorDiv = document.createElement('div');
errorDiv.className = 'field-error';
errorDiv.style.color = '#ff6b6b';
errorDiv.style.fontSize = '0.85rem';
errorDiv.style.marginTop = '0.25rem';
errorDiv.textContent = message;
field.parentNode.appendChild(errorDiv);
}
function clearFieldError(field) {
field.style.borderColor = '';
field.style.backgroundColor = '';
const existingError = field.parentNode.querySelector('.field-error');
if (existingError) {
existingError.remove();
}
}
/* ==========================================
Smooth Scrolling
========================================== */
function initSmoothScroll() {
const links = document.querySelectorAll('a[href^="#"]');
links.forEach(link => {
link.addEventListener('click', function(e) {
const href = this.getAttribute('href');
if (href === '#') {
e.preventDefault();
window.scrollTo({ top: 0, behavior: 'smooth' });
return;
}
const target = document.querySelector(href);
if (target) {
e.preventDefault();
const header = document.querySelector('.header');
const headerHeight = header ? header.offsetHeight : 100;
const targetPosition = target.offsetTop - headerHeight - 30;
window.scrollTo({
top: Math.max(0, targetPosition),
behavior: 'smooth'
});
}
});
});
}
/* ==========================================
Scroll to Top Button
========================================== */
function initScrollToTop() {
// Create scroll to top button
const scrollToTopBtn = document.createElement('button');
scrollToTopBtn.innerHTML = '
';
scrollToTopBtn.className = 'scroll-to-top';
scrollToTopBtn.setAttribute('aria-label', 'ページトップに戻る');
// Add styles
Object.assign(scrollToTopBtn.style, {
position: 'fixed',
bottom: '30px',
right: '30px',
width: '50px',
height: '50px',
borderRadius: '50%',
background: 'linear-gradient(45deg, #ff9a9a, #e8a5a5)',
color: 'white',
border: 'none',
boxShadow: '0 5px 20px rgba(255, 154, 154, 0.4)',
cursor: 'pointer',
opacity: '0',
visibility: 'hidden',
transition: 'all 0.3s ease',
zIndex: '1000',
fontSize: '1.2rem'
});
document.body.appendChild(scrollToTopBtn);
// Show/hide button based on scroll position
window.addEventListener('scroll', function() {
if (window.scrollY > 500) {
scrollToTopBtn.style.opacity = '1';
scrollToTopBtn.style.visibility = 'visible';
} else {
scrollToTopBtn.style.opacity = '0';
scrollToTopBtn.style.visibility = 'hidden';
}
});
// Scroll to top functionality
scrollToTopBtn.addEventListener('click', function() {
window.scrollTo({ top: 0, behavior: 'smooth' });
});
// Hover effects
scrollToTopBtn.addEventListener('mouseenter', function() {
this.style.transform = 'translateY(-3px)';
this.style.boxShadow = '0 8px 25px rgba(255, 154, 154, 0.6)';
});
scrollToTopBtn.addEventListener('mouseleave', function() {
this.style.transform = 'translateY(0)';
this.style.boxShadow = '0 5px 20px rgba(255, 154, 154, 0.4)';
});
}
/* ==========================================
Notification System
========================================== */
function showNotification(message, type = 'info') {
const notification = document.createElement('div');
notification.className = `notification notification-${type}`;
const colors = {
success: { bg: '#d4edda', border: '#c3e6cb', text: '#155724' },
error: { bg: '#f8d7da', border: '#f5c6cb', text: '#721c24' },
info: { bg: '#d1ecf1', border: '#bee5eb', text: '#0c5460' }
};
const color = colors[type] || colors.info;
Object.assign(notification.style, {
position: 'fixed',
top: '100px',
right: '20px',
background: color.bg,
color: color.text,
border: `1px solid ${color.border}`,
borderRadius: '8px',
padding: '1rem 1.5rem',
maxWidth: '400px',
zIndex: '2000',
boxShadow: '0 10px 30px rgba(0, 0, 0, 0.1)',
transform: 'translateX(120%)',
transition: 'transform 0.3s ease',
whiteSpace: 'pre-line'
});
notification.innerHTML = `
`;
document.body.appendChild(notification);
// Animate in
setTimeout(() => {
notification.style.transform = 'translateX(0)';
}, 100);
// Auto remove after 5 seconds
setTimeout(() => {
notification.style.transform = 'translateX(120%)';
setTimeout(() => {
if (notification.parentNode) {
notification.parentNode.removeChild(notification);
}
}, 300);
}, 5000);
}
/* ==========================================
Analytics & Tracking
========================================== */
function trackFormSubmission(inquiryType) {
// GA4 or other analytics tracking
if (typeof gtag !== 'undefined') {
gtag('event', 'form_submit', {
event_category: 'engagement',
event_label: inquiryType,
value: 1
});
}
console.log(`Form submission tracked: ${inquiryType}`);
}
/* ==========================================
Utility Functions
========================================== */
function debounce(func, wait) {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
function throttle(func, limit) {
let inThrottle;
return function() {
const args = arguments;
const context = this;
if (!inThrottle) {
func.apply(context, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
// Performance optimization for scroll events
const optimizedScrollHandler = throttle(updateActiveNavLink, 100);
window.addEventListener('scroll', optimizedScrollHandler);
/* ==========================================
Accessibility Improvements
========================================== */
document.addEventListener('keydown', function(e) {
// Skip to content functionality
if (e.key === 'Tab' && !e.shiftKey) {
const focusedElement = document.activeElement;
if (focusedElement.classList.contains('skip-link')) {
const target = document.querySelector(focusedElement.getAttribute('href'));
if (target) {
target.focus();
e.preventDefault();
}
}
}
});
/* ==========================================
Error Handling
========================================== */
window.addEventListener('error', function(e) {
console.error('JavaScript error:', e.error);
// In production, you might want to send this to an error tracking service
});
/* ==========================================
Image Loading Optimization
========================================== */
function initImageLoading() {
// 画像の遅延読み込み処理
const images = document.querySelectorAll('.product-image');
if ('IntersectionObserver' in window) {
const imageObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
const parent = img.closest('.product-image-section');
img.onload = () => {
if (parent) {
parent.classList.add('loaded');
}
};
// 画像が既に読み込み済みの場合
if (img.complete) {
if (parent) {
parent.classList.add('loaded');
}
}
imageObserver.unobserve(img);
}
});
}, {
rootMargin: '50px'
});
images.forEach(img => imageObserver.observe(img));
} else {
// IntersectionObserver非対応の場合は即座に読み込み
images.forEach(img => {
const parent = img.closest('.product-image-section');
if (parent) {
parent.classList.add('loaded');
}
});
}
// ヒーロー画像の読み込み処理
const heroImage = document.querySelector('.hero-main-image');
if (heroImage) {
heroImage.onload = () => {
heroImage.style.opacity = '1';
};
if (heroImage.complete) {
heroImage.style.opacity = '1';
}
}
}
// Ensure all critical functions are available globally
window.openSampleForm = openSampleForm;
window.openConsultationForm = openConsultationForm;
window.closeModal = closeModal;