georad commited on
Commit
20402fe
·
verified ·
1 Parent(s): 18bf412

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -50
app.py CHANGED
@@ -1,58 +1,35 @@
1
  import streamlit as st
2
 
3
- # Inspect the header element, go to the "Computed" tab in styles, and find its height.
4
- HEADER_HEIGHT = "60px" # EXAMPLE: Adjust this (e.g., "56px", "4rem")
5
- HEADER_SELECTOR = 'header[data-testid="stHeader"]'
6
-
7
- # ---- SELECTOR FOR THE MAIN CONTENT AREA THAT NEEDS PADDING ----
8
- # Target the first direct div child of the stAppViewContainer which often holds the main scrollable content
9
- MAIN_CONTENT_SELECTOR = 'section[data-testid="stMain"]'
10
- #MAIN_CONTENT_SELECTOR = 'section[data-testid="stMain"] > div:nth-child(1)'
11
- #MAIN_CONTENT_SELECTOR = 'section[data-testid="stMainBlockContainer"]'
12
- #MAIN_CONTENT_SELECTOR = 'section[data-testid="stAppViewContainer"]'
13
- #MAIN_CONTENT_SELECTOR = 'section[data-testid="stAppViewContainer"] > div:nth-child(1)'
14
- # Alternative if the above doesn't work or if your content is further nested:
15
- #MAIN_CONTENT_SELECTOR = 'section[data-testid="stAppViewContainer"] .main-content-wrapper-class'
16
- # Or, very commonly, Streamlit wraps main content in a div with class "block-container":
17
- #MAIN_CONTENT_SELECTOR = 'section[data-testid="stAppViewContainer"] .block-container'
18
- #MAIN_CONTENT_SELECTOR = '.main .block-container' # A more general selector for block-container
19
-
20
- custom_css = f"""
21
  <style>
22
- /* Making the Streamlit header sticky */
23
- {HEADER_SELECTOR} {{
24
- position: -webkit-sticky !important; /* For Safari */
25
- position: sticky !important;
26
- top: 0 !important;
27
- z-index: 9999 !important; /* Very high z-index */
28
- background-color: #90EE90 !important; /* Or your app's header background color */
29
- /* Add a subtle shadow to make it feel more distinct when content scrolls under */
30
- /* box-shadow: 0 2px 4px -1px rgba(0,0,0,0.1); */
31
- /*.reportview-container .main .block-container{{ */
32
- /* padding-top: 0rem; */
33
- /* }} */
34
- }}
35
-
36
- /* Adding padding to the main content area to prevent overlap with the sticky header */
37
- {MAIN_CONTENT_SELECTOR} {{
38
- padding-top: 10px !important; /* {HEADER_HEIGHT} !important; */
39
- /* background-color: yellow !important; */
40
- /* border-style: solid !important; */
41
- /* border-color: red !important; */
42
- }}
43
-
44
- /* Optional: If your app is set to wide mode and the header isn't spanning full width */
45
- /* This might be needed if the sticky positioning affects its width calculation. */
46
- /*
47
- #{HEADER_SELECTOR} {{
48
- # width: 100% !important;
49
- #}}
50
- #*/
51
  </style>
52
- """
53
 
54
- # Inject CSS as early as possible in your app
55
- st.markdown(custom_css, unsafe_allow_html=True)
 
56
 
57
  # --- PAGE SETUP ---
58
  type_text_page = st.Page(
 
1
  import streamlit as st
2
 
3
+ # Custom CSS for sticky header
4
+ st.markdown("""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  <style>
6
+ .stApp header {
7
+ position: fixed;
8
+ top: 0;
9
+ z-index: 999;
10
+ background-color: white;
11
+ width: 100%;
12
+ }
13
+
14
+ /* Add padding to the main content to prevent it from being hidden under the fixed header */
15
+ .main .block-container {
16
+ padding-top: 5rem;
17
+ }
18
+
19
+ /* Additional CSS to ensure compatibility with Hugging Face iframe embedding */
20
+ .stApp {
21
+ overflow: auto;
22
+ }
23
+
24
+ div[data-testid="stVerticalBlock"] {
25
+ padding-top: 1rem;
26
+ }
 
 
 
 
 
 
 
 
27
  </style>
28
+ """, unsafe_allow_html=True)
29
 
30
+ # Your app content
31
+ st.title("My App with Sticky Header")
32
+ # Rest of your app...
33
 
34
  # --- PAGE SETUP ---
35
  type_text_page = st.Page(