Best Practices

🚧

Coming Soon! We're putting the finishing touches on this feature

CSS Organization

/* =========================
   GLOBAL OVERRIDES
   ========================= */
/* High-level app styling that applies everywhere */
.kn-app .kn-action-button {
  font-family: 'Inter', sans-serif;
}

/* =========================
   LAYOUT COMPONENTS
   ========================= */
/* Navigation, headers, page structure */
.kn-page .kn-main-nav {
  /* Navigation styles */
}

/* =========================
   VIEW COMPONENTS  
   ========================= */
/* Forms, tables, charts, lists */
.kn-page .kn-form-view {
  /* Form styles */
}

/* =========================
   SCENE/VIEW SPECIFIC
   ========================= */
/* Page and view-specific overrides */
.scene_123.kn-page {
  /* Specific page customizations */
}

/* =========================
   RESPONSIVE OVERRIDES
   ========================= */
/* Mobile and tablet specific styles */
@media (max-width: 768px) {
  /* Mobile styles */
}

Performance Tips

Use Efficient Selectors

/* ✅ Efficient - specific but not overly complex */
.kn-page .kn-action-button {
  background-color: #007bff;
}

/* ❌ Inefficient - overly specific and slow */
.kn-app > .kn-page-container > .kn-page > .kn-view > .kn-action-button {
  background-color: #007bff;
}

/* ✅ Good for specific targeting */
.scene_123_view_456.kn-form-view .kn-action-button {
  background-color: #28a745;
}

Minimize Repaints and Reflows

/* ✅ Use transform and opacity for animations */
.kn-page .kn-view {
  transition: transform 0.2s ease, opacity 0.2s ease;
}

.kn-page .kn-view:hover {
  transform: translateY(-2px);
  opacity: 0.95;
}

/* ❌ Avoid animating layout properties */
.kn-page .kn-view:hover {
  width: 102%; /* Causes reflow */
  height: 102%; /* Causes reflow */
  top: -2px; /* Causes reflow */
}

Accessibility Guidelines

Maintain Focus Indicators

.kn-page .kn-action-button:focus {
  outline: 2px solid #007bff;
  outline-offset: 2px;
}

/* Custom focus styles that are still accessible */
.kn-page .kn-action-button:focus {
  outline: none; /* Only remove if providing alternative */
  box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.3);
}

Ensure Sufficient Color Contrast

.kn-page .kn-action-button {
  background-color: #007bff; /* Meets WCAG AA contrast requirements with white text */
  color: white;
}

Maintenance Tips

Document Your Overrides

/* Override required due to Knack's inline styles on form elements */
.kn-page .kn-form-view {
  background-color: white !important;
}

/* Scene 123 is the user dashboard - needs special styling */
.scene_123.kn-page {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  padding: 3rem;
}

/* View 456 is the contact form - make it prominent */
.scene_123_view_456.kn-form-view {
  max-width: 800px;
  margin: 0 auto;
  box-shadow: 0 10px 15px rgba(0,0,0,0.1);
}

Testing Checklist

  • Test on mobile devices (not just browser resize)
  • Check different screen sizes (tablet, desktop, large screens)
  • Verify styles work in different browsers
  • Test with keyboard navigation (Tab, Enter, Space)
  • Check color contrast ratios
  • Ensure styles don't break when content changes